diff --git a/src/ztp/.mvn/wrapper/maven-wrapper.properties b/src/ztp/.mvn/wrapper/maven-wrapper.properties
index ffdc10e59f87823d5abb635aa2e37bf281698e83..abd303b6738e8492a676925355189594fe1528ac 100644
--- a/src/ztp/.mvn/wrapper/maven-wrapper.properties
+++ b/src/ztp/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,2 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip
 wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/src/ztp/pom.xml b/src/ztp/pom.xml
index c62f5d52e4792f47f925206aad8b1da52ea1221c..96299c6ed2690075420869c5e81559ce839e8a52 100644
--- a/src/ztp/pom.xml
+++ b/src/ztp/pom.xml
@@ -57,8 +57,9 @@
     <spotless-plugin.version>2.10.3</spotless-plugin.version>
     <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>
     <quarkus-maven-plugin.version>${quarkus.platform.version}</quarkus-maven-plugin.version>
+    <quarkus-bootstrap-maven-version>2.16.12.Final</quarkus-bootstrap-maven-version>
     <!-- Third-party Dependencies -->
-    <quarkus.platform.version>2.2.2.Final</quarkus.platform.version>
+    <quarkus.platform.version>3.1.3.Final</quarkus.platform.version>
   </properties>
 
   <distributionManagement>
@@ -272,7 +273,7 @@
         <plugin>
           <groupId>io.quarkus</groupId>
           <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
-          <version>${quarkus-maven-plugin.version}</version>
+          <version>${quarkus-bootstrap-maven-version}</version>
         </plugin>
 
         <plugin>
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
index 9afd60a57a72816e3a7f9e4f891da5d037c01e2d..2a6585821c78a156f0f5f8a13dba72a23fffb94a 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
@@ -17,10 +17,10 @@
 package org.etsi.tfs.ztp;
 
 import io.quarkus.runtime.StartupEvent;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
+import jakarta.inject.Inject;
 import java.time.Duration;
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.event.Observes;
-import javax.inject.Inject;
 import org.etsi.tfs.ztp.context.ContextService;
 import org.etsi.tfs.ztp.context.model.Event;
 import org.etsi.tfs.ztp.context.model.EventTypeEnum;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
index feb65b77c9f45c760474f5e25a82b68eac8a7a01..6106c95ffd0d5dfbddc0d809520a320251cbead9 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
@@ -25,8 +25,8 @@ import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Location.LocationCase;
 import context.ContextOuterClass.Uuid;
+import jakarta.inject.Singleton;
 import java.util.stream.Collectors;
-import javax.inject.Singleton;
 import kpi_sample_types.KpiSampleTypes;
 import org.etsi.tfs.ztp.acl.AclAction;
 import org.etsi.tfs.ztp.acl.AclEntry;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
index 70188bc47174e0c5c7e8a9655be4854885902b02..3d025dc734265052cb2c855f3e2bc43c3b068669 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
@@ -16,7 +16,7 @@
 
 package org.etsi.tfs.ztp;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
 import org.eclipse.microprofile.health.HealthCheckResponse;
 import org.eclipse.microprofile.health.Liveness;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
index 3e4b996baa45522b986824580920aae522298573..8b13a123b0cc66661a341176bd454a54fc5f37e7 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
@@ -16,7 +16,7 @@
 
 package org.etsi.tfs.ztp;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
 import org.eclipse.microprofile.health.HealthCheckResponse;
 import org.eclipse.microprofile.health.Readiness;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
index a07b933bc191f5616c3f30281264847407b85c03..f93652be911ff46435c1edeef105dd6c1ee448b9 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
@@ -19,7 +19,7 @@ package org.etsi.tfs.ztp;
 import context.ContextOuterClass;
 import io.quarkus.grpc.GrpcService;
 import io.smallrye.mutiny.Uni;
-import javax.inject.Inject;
+import jakarta.inject.Inject;
 import org.eclipse.microprofile.metrics.MetricUnits;
 import org.eclipse.microprofile.metrics.annotation.Counted;
 import org.eclipse.microprofile.metrics.annotation.Timed;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
index 28109871f3f2080c723ab1dfb4dd30fc3b01ec26..0f0f502d5a8c8baa1de9f12020f570c0b01d2f11 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
@@ -17,8 +17,8 @@
 package org.etsi.tfs.ztp;
 
 import io.smallrye.mutiny.Uni;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.etsi.tfs.ztp.context.ContextService;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceConfig;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
index 405da63be14fc979d3a572de318489631c254006..70e01858cbbc5e4c34f367d728e93febacea1141 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
@@ -21,8 +21,8 @@ import context.MutinyContextServiceGrpc.MutinyContextServiceStub;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.etsi.tfs.ztp.Serializer;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceEvent;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
index cd0b09b38752d7f1d7c4d7f9c4abc576e655a980..1531481d5cd2810dfd1e172a905ecbeb223f75cd 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
@@ -18,8 +18,8 @@ package org.etsi.tfs.ztp.context;
 
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceEvent;
 
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
index cb8ff578c9c42de3c6470c5542e072a5437fafa7..90210e242b1812dc7dd4a3ca3fb99bd99ae559ae 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
@@ -19,8 +19,8 @@ package org.etsi.tfs.ztp.device;
 import device.DeviceService;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.etsi.tfs.ztp.Serializer;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceConfig;
diff --git a/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
index 1d889ec0a14f82182acedcb5e5a3f4c919c4b67b..a42d82da7cecbd39423094cb1f131939d7d04659 100644
--- a/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
@@ -17,8 +17,8 @@
 package org.etsi.tfs.ztp.device;
 
 import io.smallrye.mutiny.Uni;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
 import org.etsi.tfs.ztp.context.model.Device;
 import org.etsi.tfs.ztp.context.model.DeviceConfig;
 import org.etsi.tfs.ztp.context.model.Empty;
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
index 0265bbfad5b4a5a202ed3fa77d136aa8fc68381d..f208904e669f7b2274857b96c76a95e6498f906d 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
@@ -24,8 +24,8 @@ import io.quarkus.runtime.StartupEvent;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
 import io.smallrye.mutiny.Multi;
+import jakarta.inject.Inject;
 import java.util.UUID;
-import javax.inject.Inject;
 import org.etsi.tfs.ztp.context.ContextGateway;
 import org.etsi.tfs.ztp.context.model.DeviceEvent;
 import org.etsi.tfs.ztp.context.model.Event;
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
index bce235c7f96404b354bbf200a7ff50643503af57..a9fe40bd9ded75a3911c77f815e56f6b5644b7a0 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
@@ -17,9 +17,9 @@
 package org.etsi.tfs.ztp;
 
 import io.smallrye.config.SmallRyeConfig;
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.ws.rs.Produces;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.Produces;
 import org.eclipse.microprofile.config.Config;
 
 public class MockZtpConfiguration {
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
index 67048119d0b0cdb8d1fb2df2dcb2659b0870efb3..f1cb798b284c80e27011127f50180aa1f3886b7e 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
@@ -25,10 +25,10 @@ import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Uuid;
 import io.quarkus.test.junit.QuarkusTest;
+import jakarta.inject.Inject;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import javax.inject.Inject;
 import kpi_sample_types.KpiSampleTypes;
 import org.etsi.tfs.ztp.acl.AclAction;
 import org.etsi.tfs.ztp.acl.AclEntry;
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
index 5f1030e7a382c1b5480625b05b88812303b70f5c..49caf4e88dd23960816b60da5b3d6ae279164c28 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
@@ -22,10 +22,10 @@ import context.ContextOuterClass;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
 import io.smallrye.mutiny.Uni;
+import jakarta.inject.Inject;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
-import javax.inject.Inject;
 import org.assertj.core.api.Assertions;
 import org.etsi.tfs.ztp.context.ContextGateway;
 import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
diff --git a/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
index 32b8ff850367cde6753f072885c75249719a81ec..e64746d8bb2f9709505cda70a4fe01d7b0994446 100644
--- a/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
@@ -23,12 +23,12 @@ import io.quarkus.grpc.GrpcClient;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
 import io.smallrye.mutiny.Uni;
+import jakarta.inject.Inject;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import javax.inject.Inject;
 import org.etsi.tfs.ztp.context.ContextGateway;
 import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
 import org.etsi.tfs.ztp.context.model.ConfigRule;
diff --git a/src/ztp/target/generated-sources/grpc/acl/Acl.java b/src/ztp/target/generated-sources/grpc/acl/Acl.java
index 521294eefdec36b373b99aaca5281be28e01d2db..cba5f55d7620c589307ed15fd548ce386cbc6ff0 100644
--- a/src/ztp/target/generated-sources/grpc/acl/Acl.java
+++ b/src/ztp/target/generated-sources/grpc/acl/Acl.java
@@ -1,4654 +1,4377 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: acl.proto
-
 package acl;
 
 public final class Acl {
-  private Acl() {}
-  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 acl.AclRuleTypeEnum}
-   */
-  public enum AclRuleTypeEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>ACLRULETYPE_UNDEFINED = 0;</code>
-     */
-    ACLRULETYPE_UNDEFINED(0),
-    /**
-     * <code>ACLRULETYPE_IPV4 = 1;</code>
-     */
-    ACLRULETYPE_IPV4(1),
-    /**
-     * <code>ACLRULETYPE_IPV6 = 2;</code>
-     */
-    ACLRULETYPE_IPV6(2),
-    /**
-     * <code>ACLRULETYPE_L2 = 3;</code>
-     */
-    ACLRULETYPE_L2(3),
-    /**
-     * <code>ACLRULETYPE_MPLS = 4;</code>
-     */
-    ACLRULETYPE_MPLS(4),
-    /**
-     * <code>ACLRULETYPE_MIXED = 5;</code>
-     */
-    ACLRULETYPE_MIXED(5),
-    UNRECOGNIZED(-1),
-    ;
-
-    /**
-     * <code>ACLRULETYPE_UNDEFINED = 0;</code>
-     */
-    public static final int ACLRULETYPE_UNDEFINED_VALUE = 0;
-    /**
-     * <code>ACLRULETYPE_IPV4 = 1;</code>
-     */
-    public static final int ACLRULETYPE_IPV4_VALUE = 1;
-    /**
-     * <code>ACLRULETYPE_IPV6 = 2;</code>
-     */
-    public static final int ACLRULETYPE_IPV6_VALUE = 2;
-    /**
-     * <code>ACLRULETYPE_L2 = 3;</code>
-     */
-    public static final int ACLRULETYPE_L2_VALUE = 3;
-    /**
-     * <code>ACLRULETYPE_MPLS = 4;</code>
-     */
-    public static final int ACLRULETYPE_MPLS_VALUE = 4;
-    /**
-     * <code>ACLRULETYPE_MIXED = 5;</code>
-     */
-    public static final int ACLRULETYPE_MIXED_VALUE = 5;
 
+    private Acl() {
+    }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
     }
 
-    /**
-     * @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 AclRuleTypeEnum valueOf(int value) {
-      return forNumber(value);
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code acl.AclRuleTypeEnum}
      */
-    public static AclRuleTypeEnum forNumber(int value) {
-      switch (value) {
-        case 0: return ACLRULETYPE_UNDEFINED;
-        case 1: return ACLRULETYPE_IPV4;
-        case 2: return ACLRULETYPE_IPV6;
-        case 3: return ACLRULETYPE_L2;
-        case 4: return ACLRULETYPE_MPLS;
-        case 5: return ACLRULETYPE_MIXED;
-        default: return null;
-      }
-    }
+    public enum AclRuleTypeEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>ACLRULETYPE_UNDEFINED = 0;</code>
+         */
+        ACLRULETYPE_UNDEFINED(0),
+        /**
+         * <code>ACLRULETYPE_IPV4 = 1;</code>
+         */
+        ACLRULETYPE_IPV4(1),
+        /**
+         * <code>ACLRULETYPE_IPV6 = 2;</code>
+         */
+        ACLRULETYPE_IPV6(2),
+        /**
+         * <code>ACLRULETYPE_L2 = 3;</code>
+         */
+        ACLRULETYPE_L2(3),
+        /**
+         * <code>ACLRULETYPE_MPLS = 4;</code>
+         */
+        ACLRULETYPE_MPLS(4),
+        /**
+         * <code>ACLRULETYPE_MIXED = 5;</code>
+         */
+        ACLRULETYPE_MIXED(5),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>ACLRULETYPE_UNDEFINED = 0;</code>
+         */
+        public static final int ACLRULETYPE_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>ACLRULETYPE_IPV4 = 1;</code>
+         */
+        public static final int ACLRULETYPE_IPV4_VALUE = 1;
+
+        /**
+         * <code>ACLRULETYPE_IPV6 = 2;</code>
+         */
+        public static final int ACLRULETYPE_IPV6_VALUE = 2;
+
+        /**
+         * <code>ACLRULETYPE_L2 = 3;</code>
+         */
+        public static final int ACLRULETYPE_L2_VALUE = 3;
+
+        /**
+         * <code>ACLRULETYPE_MPLS = 4;</code>
+         */
+        public static final int ACLRULETYPE_MPLS_VALUE = 4;
+
+        /**
+         * <code>ACLRULETYPE_MIXED = 5;</code>
+         */
+        public static final int ACLRULETYPE_MIXED_VALUE = 5;
+
+        public final int getNumber() {
+            if (this == UNRECOGNIZED) {
+                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
+            }
+            return value;
+        }
 
-    public static com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        AclRuleTypeEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum>() {
-            public AclRuleTypeEnum findValueByNumber(int number) {
-              return AclRuleTypeEnum.forNumber(number);
+        /**
+         * @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 AclRuleTypeEnum 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 AclRuleTypeEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return ACLRULETYPE_UNDEFINED;
+                case 1:
+                    return ACLRULETYPE_IPV4;
+                case 2:
+                    return ACLRULETYPE_IPV6;
+                case 3:
+                    return ACLRULETYPE_L2;
+                case 4:
+                    return ACLRULETYPE_MPLS;
+                case 5:
+                    return ACLRULETYPE_MIXED;
+                default:
+                    return null;
             }
-          };
+        }
 
-    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 acl.Acl.getDescriptor().getEnumTypes().get(0);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private static final AclRuleTypeEnum[] VALUES = values();
-
-    public static AclRuleTypeEnum 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 static final com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclRuleTypeEnum>() {
 
-    private final int value;
+            public AclRuleTypeEnum findValueByNumber(int number) {
+                return AclRuleTypeEnum.forNumber(number);
+            }
+        };
 
-    private AclRuleTypeEnum(int value) {
-      this.value = value;
-    }
+        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());
+        }
 
-    // @@protoc_insertion_point(enum_scope:acl.AclRuleTypeEnum)
-  }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-  /**
-   * Protobuf enum {@code acl.AclForwardActionEnum}
-   */
-  public enum AclForwardActionEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
-     */
-    ACLFORWARDINGACTION_UNDEFINED(0),
-    /**
-     * <code>ACLFORWARDINGACTION_DROP = 1;</code>
-     */
-    ACLFORWARDINGACTION_DROP(1),
-    /**
-     * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
-     */
-    ACLFORWARDINGACTION_ACCEPT(2),
-    /**
-     * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
-     */
-    ACLFORWARDINGACTION_REJECT(3),
-    UNRECOGNIZED(-1),
-    ;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return acl.Acl.getDescriptor().getEnumTypes().get(0);
+        }
 
-    /**
-     * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
-     */
-    public static final int ACLFORWARDINGACTION_UNDEFINED_VALUE = 0;
-    /**
-     * <code>ACLFORWARDINGACTION_DROP = 1;</code>
-     */
-    public static final int ACLFORWARDINGACTION_DROP_VALUE = 1;
-    /**
-     * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
-     */
-    public static final int ACLFORWARDINGACTION_ACCEPT_VALUE = 2;
-    /**
-     * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
-     */
-    public static final int ACLFORWARDINGACTION_REJECT_VALUE = 3;
+        private static final AclRuleTypeEnum[] VALUES = values();
 
+        public static AclRuleTypeEnum 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()];
+        }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        private final int 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 AclForwardActionEnum valueOf(int value) {
-      return forNumber(value);
+        private AclRuleTypeEnum(int value) {
+            this.value = value;
+        }
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code acl.AclForwardActionEnum}
      */
-    public static AclForwardActionEnum forNumber(int value) {
-      switch (value) {
-        case 0: return ACLFORWARDINGACTION_UNDEFINED;
-        case 1: return ACLFORWARDINGACTION_DROP;
-        case 2: return ACLFORWARDINGACTION_ACCEPT;
-        case 3: return ACLFORWARDINGACTION_REJECT;
-        default: return null;
-      }
-    }
+    public enum AclForwardActionEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
+         */
+        ACLFORWARDINGACTION_UNDEFINED(0),
+        /**
+         * <code>ACLFORWARDINGACTION_DROP = 1;</code>
+         */
+        ACLFORWARDINGACTION_DROP(1),
+        /**
+         * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
+         */
+        ACLFORWARDINGACTION_ACCEPT(2),
+        /**
+         * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
+         */
+        ACLFORWARDINGACTION_REJECT(3),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>ACLFORWARDINGACTION_UNDEFINED = 0;</code>
+         */
+        public static final int ACLFORWARDINGACTION_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>ACLFORWARDINGACTION_DROP = 1;</code>
+         */
+        public static final int ACLFORWARDINGACTION_DROP_VALUE = 1;
+
+        /**
+         * <code>ACLFORWARDINGACTION_ACCEPT = 2;</code>
+         */
+        public static final int ACLFORWARDINGACTION_ACCEPT_VALUE = 2;
+
+        /**
+         * <code>ACLFORWARDINGACTION_REJECT = 3;</code>
+         */
+        public static final int ACLFORWARDINGACTION_REJECT_VALUE = 3;
+
+        public final int getNumber() {
+            if (this == UNRECOGNIZED) {
+                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
+            }
+            return value;
+        }
 
-    public static com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        AclForwardActionEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum>() {
-            public AclForwardActionEnum findValueByNumber(int number) {
-              return AclForwardActionEnum.forNumber(number);
+        /**
+         * @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 AclForwardActionEnum 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 AclForwardActionEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return ACLFORWARDINGACTION_UNDEFINED;
+                case 1:
+                    return ACLFORWARDINGACTION_DROP;
+                case 2:
+                    return ACLFORWARDINGACTION_ACCEPT;
+                case 3:
+                    return ACLFORWARDINGACTION_REJECT;
+                default:
+                    return null;
             }
-          };
+        }
 
-    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 acl.Acl.getDescriptor().getEnumTypes().get(1);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private static final AclForwardActionEnum[] VALUES = values();
-
-    public static AclForwardActionEnum 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 static final com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclForwardActionEnum>() {
 
-    private final int value;
+            public AclForwardActionEnum findValueByNumber(int number) {
+                return AclForwardActionEnum.forNumber(number);
+            }
+        };
 
-    private AclForwardActionEnum(int value) {
-      this.value = value;
-    }
+        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());
+        }
 
-    // @@protoc_insertion_point(enum_scope:acl.AclForwardActionEnum)
-  }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-  /**
-   * Protobuf enum {@code acl.AclLogActionEnum}
-   */
-  public enum AclLogActionEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>ACLLOGACTION_UNDEFINED = 0;</code>
-     */
-    ACLLOGACTION_UNDEFINED(0),
-    /**
-     * <code>ACLLOGACTION_NOLOG = 1;</code>
-     */
-    ACLLOGACTION_NOLOG(1),
-    /**
-     * <code>ACLLOGACTION_SYSLOG = 2;</code>
-     */
-    ACLLOGACTION_SYSLOG(2),
-    UNRECOGNIZED(-1),
-    ;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return acl.Acl.getDescriptor().getEnumTypes().get(1);
+        }
 
-    /**
-     * <code>ACLLOGACTION_UNDEFINED = 0;</code>
-     */
-    public static final int ACLLOGACTION_UNDEFINED_VALUE = 0;
-    /**
-     * <code>ACLLOGACTION_NOLOG = 1;</code>
-     */
-    public static final int ACLLOGACTION_NOLOG_VALUE = 1;
-    /**
-     * <code>ACLLOGACTION_SYSLOG = 2;</code>
-     */
-    public static final int ACLLOGACTION_SYSLOG_VALUE = 2;
+        private static final AclForwardActionEnum[] VALUES = values();
 
+        public static AclForwardActionEnum 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()];
+        }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        private final int 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 AclLogActionEnum valueOf(int value) {
-      return forNumber(value);
+        private AclForwardActionEnum(int value) {
+            this.value = value;
+        }
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code acl.AclLogActionEnum}
      */
-    public static AclLogActionEnum forNumber(int value) {
-      switch (value) {
-        case 0: return ACLLOGACTION_UNDEFINED;
-        case 1: return ACLLOGACTION_NOLOG;
-        case 2: return ACLLOGACTION_SYSLOG;
-        default: return null;
-      }
-    }
+    public enum AclLogActionEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>ACLLOGACTION_UNDEFINED = 0;</code>
+         */
+        ACLLOGACTION_UNDEFINED(0),
+        /**
+         * <code>ACLLOGACTION_NOLOG = 1;</code>
+         */
+        ACLLOGACTION_NOLOG(1),
+        /**
+         * <code>ACLLOGACTION_SYSLOG = 2;</code>
+         */
+        ACLLOGACTION_SYSLOG(2),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>ACLLOGACTION_UNDEFINED = 0;</code>
+         */
+        public static final int ACLLOGACTION_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>ACLLOGACTION_NOLOG = 1;</code>
+         */
+        public static final int ACLLOGACTION_NOLOG_VALUE = 1;
+
+        /**
+         * <code>ACLLOGACTION_SYSLOG = 2;</code>
+         */
+        public static final int ACLLOGACTION_SYSLOG_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 AclLogActionEnum 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 AclLogActionEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return ACLLOGACTION_UNDEFINED;
+                case 1:
+                    return ACLLOGACTION_NOLOG;
+                case 2:
+                    return ACLLOGACTION_SYSLOG;
+                default:
+                    return null;
+            }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
+
+        private static final com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        AclLogActionEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<AclLogActionEnum>() {
             public AclLogActionEnum findValueByNumber(int number) {
-              return AclLogActionEnum.forNumber(number);
+                return AclLogActionEnum.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 acl.Acl.getDescriptor().getEnumTypes().get(2);
-    }
+        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());
+        }
 
-    private static final AclLogActionEnum[] VALUES = values();
-
-    public static AclLogActionEnum 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()];
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    private final int value;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return acl.Acl.getDescriptor().getEnumTypes().get(2);
+        }
 
-    private AclLogActionEnum(int value) {
-      this.value = value;
-    }
+        private static final AclLogActionEnum[] VALUES = values();
 
-    // @@protoc_insertion_point(enum_scope:acl.AclLogActionEnum)
-  }
+        public static AclLogActionEnum 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()];
+        }
 
-  public interface AclMatchOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:acl.AclMatch)
-      com.google.protobuf.MessageOrBuilder {
+        private final int value;
 
-    /**
-     * <code>uint32 dscp = 1;</code>
-     * @return The dscp.
-     */
-    int getDscp();
+        private AclLogActionEnum(int value) {
+            this.value = value;
+        }
+    }
 
-    /**
-     * <code>uint32 protocol = 2;</code>
-     * @return The protocol.
-     */
-    int getProtocol();
+    public interface AclMatchOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclMatch)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>uint32 dscp = 1;</code>
+         * @return The dscp.
+         */
+        int getDscp();
+
+        /**
+         * <code>uint32 protocol = 2;</code>
+         * @return The protocol.
+         */
+        int getProtocol();
+
+        /**
+         * <code>string src_address = 3;</code>
+         * @return The srcAddress.
+         */
+        java.lang.String getSrcAddress();
+
+        /**
+         * <code>string src_address = 3;</code>
+         * @return The bytes for srcAddress.
+         */
+        com.google.protobuf.ByteString getSrcAddressBytes();
+
+        /**
+         * <code>string dst_address = 4;</code>
+         * @return The dstAddress.
+         */
+        java.lang.String getDstAddress();
+
+        /**
+         * <code>string dst_address = 4;</code>
+         * @return The bytes for dstAddress.
+         */
+        com.google.protobuf.ByteString getDstAddressBytes();
+
+        /**
+         * <code>uint32 src_port = 5;</code>
+         * @return The srcPort.
+         */
+        int getSrcPort();
+
+        /**
+         * <code>uint32 dst_port = 6;</code>
+         * @return The dstPort.
+         */
+        int getDstPort();
+
+        /**
+         * <code>uint32 start_mpls_label = 7;</code>
+         * @return The startMplsLabel.
+         */
+        int getStartMplsLabel();
+
+        /**
+         * <code>uint32 end_mpls_label = 8;</code>
+         * @return The endMplsLabel.
+         */
+        int getEndMplsLabel();
+    }
 
     /**
-     * <code>string src_address = 3;</code>
-     * @return The srcAddress.
-     */
-    java.lang.String getSrcAddress();
-    /**
-     * <code>string src_address = 3;</code>
-     * @return The bytes for srcAddress.
+     * Protobuf type {@code acl.AclMatch}
      */
-    com.google.protobuf.ByteString
-        getSrcAddressBytes();
+    public static final class AclMatch extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclMatch)
+    AclMatchOrBuilder {
 
-    /**
-     * <code>string dst_address = 4;</code>
-     * @return The dstAddress.
-     */
-    java.lang.String getDstAddress();
-    /**
-     * <code>string dst_address = 4;</code>
-     * @return The bytes for dstAddress.
-     */
-    com.google.protobuf.ByteString
-        getDstAddressBytes();
+        private static final long serialVersionUID = 0L;
 
-    /**
-     * <code>uint32 src_port = 5;</code>
-     * @return The srcPort.
-     */
-    int getSrcPort();
+        // Use AclMatch.newBuilder() to construct.
+        private AclMatch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    /**
-     * <code>uint32 dst_port = 6;</code>
-     * @return The dstPort.
-     */
-    int getDstPort();
+        private AclMatch() {
+            srcAddress_ = "";
+            dstAddress_ = "";
+        }
 
-    /**
-     * <code>uint32 start_mpls_label = 7;</code>
-     * @return The startMplsLabel.
-     */
-    int getStartMplsLabel();
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AclMatch();
+        }
 
-    /**
-     * <code>uint32 end_mpls_label = 8;</code>
-     * @return The endMplsLabel.
-     */
-    int getEndMplsLabel();
-  }
-  /**
-   * Protobuf type {@code acl.AclMatch}
-   */
-  public static final class AclMatch extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:acl.AclMatch)
-      AclMatchOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AclMatch.newBuilder() to construct.
-    private AclMatch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AclMatch() {
-      srcAddress_ = "";
-      dstAddress_ = "";
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return acl.Acl.internal_static_acl_AclMatch_descriptor;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AclMatch();
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AclMatch(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              dscp_ = input.readUInt32();
-              break;
-            }
-            case 16: {
-
-              protocol_ = input.readUInt32();
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              srcAddress_ = s;
-              break;
-            }
-            case 34: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              dstAddress_ = s;
-              break;
-            }
-            case 40: {
-
-              srcPort_ = input.readUInt32();
-              break;
-            }
-            case 48: {
-
-              dstPort_ = input.readUInt32();
-              break;
-            }
-            case 56: {
-
-              startMplsLabel_ = input.readUInt32();
-              break;
-            }
-            case 64: {
-
-              endMplsLabel_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return acl.Acl.internal_static_acl_AclMatch_descriptor;
-    }
+        public static final int DSCP_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
-    }
+        private int dscp_ = 0;
 
-    public static final int DSCP_FIELD_NUMBER = 1;
-    private int dscp_;
-    /**
-     * <code>uint32 dscp = 1;</code>
-     * @return The dscp.
-     */
-    @java.lang.Override
-    public int getDscp() {
-      return dscp_;
-    }
+        /**
+         * <code>uint32 dscp = 1;</code>
+         * @return The dscp.
+         */
+        @java.lang.Override
+        public int getDscp() {
+            return dscp_;
+        }
 
-    public static final int PROTOCOL_FIELD_NUMBER = 2;
-    private int protocol_;
-    /**
-     * <code>uint32 protocol = 2;</code>
-     * @return The protocol.
-     */
-    @java.lang.Override
-    public int getProtocol() {
-      return protocol_;
-    }
+        public static final int PROTOCOL_FIELD_NUMBER = 2;
 
-    public static final int SRC_ADDRESS_FIELD_NUMBER = 3;
-    private volatile java.lang.Object srcAddress_;
-    /**
-     * <code>string src_address = 3;</code>
-     * @return The srcAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getSrcAddress() {
-      java.lang.Object ref = srcAddress_;
-      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();
-        srcAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string src_address = 3;</code>
-     * @return The bytes for srcAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getSrcAddressBytes() {
-      java.lang.Object ref = srcAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        srcAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        private int protocol_ = 0;
 
-    public static final int DST_ADDRESS_FIELD_NUMBER = 4;
-    private volatile java.lang.Object dstAddress_;
-    /**
-     * <code>string dst_address = 4;</code>
-     * @return The dstAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getDstAddress() {
-      java.lang.Object ref = dstAddress_;
-      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();
-        dstAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string dst_address = 4;</code>
-     * @return The bytes for dstAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getDstAddressBytes() {
-      java.lang.Object ref = dstAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        dstAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        /**
+         * <code>uint32 protocol = 2;</code>
+         * @return The protocol.
+         */
+        @java.lang.Override
+        public int getProtocol() {
+            return protocol_;
+        }
 
-    public static final int SRC_PORT_FIELD_NUMBER = 5;
-    private int srcPort_;
-    /**
-     * <code>uint32 src_port = 5;</code>
-     * @return The srcPort.
-     */
-    @java.lang.Override
-    public int getSrcPort() {
-      return srcPort_;
-    }
+        public static final int SRC_ADDRESS_FIELD_NUMBER = 3;
 
-    public static final int DST_PORT_FIELD_NUMBER = 6;
-    private int dstPort_;
-    /**
-     * <code>uint32 dst_port = 6;</code>
-     * @return The dstPort.
-     */
-    @java.lang.Override
-    public int getDstPort() {
-      return dstPort_;
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcAddress_ = "";
 
-    public static final int START_MPLS_LABEL_FIELD_NUMBER = 7;
-    private int startMplsLabel_;
-    /**
-     * <code>uint32 start_mpls_label = 7;</code>
-     * @return The startMplsLabel.
-     */
-    @java.lang.Override
-    public int getStartMplsLabel() {
-      return startMplsLabel_;
-    }
+        /**
+         * <code>string src_address = 3;</code>
+         * @return The srcAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getSrcAddress() {
+            java.lang.Object ref = srcAddress_;
+            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();
+                srcAddress_ = s;
+                return s;
+            }
+        }
 
-    public static final int END_MPLS_LABEL_FIELD_NUMBER = 8;
-    private int endMplsLabel_;
-    /**
-     * <code>uint32 end_mpls_label = 8;</code>
-     * @return The endMplsLabel.
-     */
-    @java.lang.Override
-    public int getEndMplsLabel() {
-      return endMplsLabel_;
-    }
+        /**
+         * <code>string src_address = 3;</code>
+         * @return The bytes for srcAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSrcAddressBytes() {
+            java.lang.Object ref = srcAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                srcAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static final int DST_ADDRESS_FIELD_NUMBER = 4;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstAddress_ = "";
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (dscp_ != 0) {
-        output.writeUInt32(1, dscp_);
-      }
-      if (protocol_ != 0) {
-        output.writeUInt32(2, protocol_);
-      }
-      if (!getSrcAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_);
-      }
-      if (!getDstAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_);
-      }
-      if (srcPort_ != 0) {
-        output.writeUInt32(5, srcPort_);
-      }
-      if (dstPort_ != 0) {
-        output.writeUInt32(6, dstPort_);
-      }
-      if (startMplsLabel_ != 0) {
-        output.writeUInt32(7, startMplsLabel_);
-      }
-      if (endMplsLabel_ != 0) {
-        output.writeUInt32(8, endMplsLabel_);
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>string dst_address = 4;</code>
+         * @return The dstAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getDstAddress() {
+            java.lang.Object ref = dstAddress_;
+            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();
+                dstAddress_ = s;
+                return s;
+            }
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (dscp_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(1, dscp_);
-      }
-      if (protocol_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(2, protocol_);
-      }
-      if (!getSrcAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_);
-      }
-      if (!getDstAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_);
-      }
-      if (srcPort_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(5, srcPort_);
-      }
-      if (dstPort_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(6, dstPort_);
-      }
-      if (startMplsLabel_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(7, startMplsLabel_);
-      }
-      if (endMplsLabel_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(8, endMplsLabel_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>string dst_address = 4;</code>
+         * @return The bytes for dstAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDstAddressBytes() {
+            java.lang.Object ref = dstAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                dstAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof acl.Acl.AclMatch)) {
-        return super.equals(obj);
-      }
-      acl.Acl.AclMatch other = (acl.Acl.AclMatch) obj;
-
-      if (getDscp()
-          != other.getDscp()) return false;
-      if (getProtocol()
-          != other.getProtocol()) return false;
-      if (!getSrcAddress()
-          .equals(other.getSrcAddress())) return false;
-      if (!getDstAddress()
-          .equals(other.getDstAddress())) return false;
-      if (getSrcPort()
-          != other.getSrcPort()) return false;
-      if (getDstPort()
-          != other.getDstPort()) return false;
-      if (getStartMplsLabel()
-          != other.getStartMplsLabel()) return false;
-      if (getEndMplsLabel()
-          != other.getEndMplsLabel()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final int SRC_PORT_FIELD_NUMBER = 5;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + DSCP_FIELD_NUMBER;
-      hash = (53 * hash) + getDscp();
-      hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
-      hash = (53 * hash) + getProtocol();
-      hash = (37 * hash) + SRC_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getSrcAddress().hashCode();
-      hash = (37 * hash) + DST_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getDstAddress().hashCode();
-      hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
-      hash = (53 * hash) + getSrcPort();
-      hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
-      hash = (53 * hash) + getDstPort();
-      hash = (37 * hash) + START_MPLS_LABEL_FIELD_NUMBER;
-      hash = (53 * hash) + getStartMplsLabel();
-      hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER;
-      hash = (53 * hash) + getEndMplsLabel();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private int srcPort_ = 0;
 
-    public static acl.Acl.AclMatch parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclMatch parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclMatch parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclMatch parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclMatch parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclMatch parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>uint32 src_port = 5;</code>
+         * @return The srcPort.
+         */
+        @java.lang.Override
+        public int getSrcPort() {
+            return srcPort_;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(acl.Acl.AclMatch prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int DST_PORT_FIELD_NUMBER = 6;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code acl.AclMatch}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:acl.AclMatch)
-        acl.Acl.AclMatchOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return acl.Acl.internal_static_acl_AclMatch_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
-      }
-
-      // Construct using acl.Acl.AclMatch.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        dscp_ = 0;
-
-        protocol_ = 0;
-
-        srcAddress_ = "";
-
-        dstAddress_ = "";
-
-        srcPort_ = 0;
-
-        dstPort_ = 0;
-
-        startMplsLabel_ = 0;
-
-        endMplsLabel_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return acl.Acl.internal_static_acl_AclMatch_descriptor;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclMatch getDefaultInstanceForType() {
-        return acl.Acl.AclMatch.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclMatch build() {
-        acl.Acl.AclMatch result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclMatch buildPartial() {
-        acl.Acl.AclMatch result = new acl.Acl.AclMatch(this);
-        result.dscp_ = dscp_;
-        result.protocol_ = protocol_;
-        result.srcAddress_ = srcAddress_;
-        result.dstAddress_ = dstAddress_;
-        result.srcPort_ = srcPort_;
-        result.dstPort_ = dstPort_;
-        result.startMplsLabel_ = startMplsLabel_;
-        result.endMplsLabel_ = endMplsLabel_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof acl.Acl.AclMatch) {
-          return mergeFrom((acl.Acl.AclMatch)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(acl.Acl.AclMatch other) {
-        if (other == acl.Acl.AclMatch.getDefaultInstance()) return this;
-        if (other.getDscp() != 0) {
-          setDscp(other.getDscp());
-        }
-        if (other.getProtocol() != 0) {
-          setProtocol(other.getProtocol());
-        }
-        if (!other.getSrcAddress().isEmpty()) {
-          srcAddress_ = other.srcAddress_;
-          onChanged();
-        }
-        if (!other.getDstAddress().isEmpty()) {
-          dstAddress_ = other.dstAddress_;
-          onChanged();
-        }
-        if (other.getSrcPort() != 0) {
-          setSrcPort(other.getSrcPort());
-        }
-        if (other.getDstPort() != 0) {
-          setDstPort(other.getDstPort());
-        }
-        if (other.getStartMplsLabel() != 0) {
-          setStartMplsLabel(other.getStartMplsLabel());
-        }
-        if (other.getEndMplsLabel() != 0) {
-          setEndMplsLabel(other.getEndMplsLabel());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        acl.Acl.AclMatch parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (acl.Acl.AclMatch) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int dscp_ ;
-      /**
-       * <code>uint32 dscp = 1;</code>
-       * @return The dscp.
-       */
-      @java.lang.Override
-      public int getDscp() {
-        return dscp_;
-      }
-      /**
-       * <code>uint32 dscp = 1;</code>
-       * @param value The dscp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDscp(int value) {
-        
-        dscp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 dscp = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDscp() {
-        
-        dscp_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int protocol_ ;
-      /**
-       * <code>uint32 protocol = 2;</code>
-       * @return The protocol.
-       */
-      @java.lang.Override
-      public int getProtocol() {
-        return protocol_;
-      }
-      /**
-       * <code>uint32 protocol = 2;</code>
-       * @param value The protocol to set.
-       * @return This builder for chaining.
-       */
-      public Builder setProtocol(int value) {
-        
-        protocol_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 protocol = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearProtocol() {
-        
-        protocol_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object srcAddress_ = "";
-      /**
-       * <code>string src_address = 3;</code>
-       * @return The srcAddress.
-       */
-      public java.lang.String getSrcAddress() {
-        java.lang.Object ref = srcAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          srcAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string src_address = 3;</code>
-       * @return The bytes for srcAddress.
-       */
-      public com.google.protobuf.ByteString
-          getSrcAddressBytes() {
-        java.lang.Object ref = srcAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          srcAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string src_address = 3;</code>
-       * @param value The srcAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        srcAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_address = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcAddress() {
-        
-        srcAddress_ = getDefaultInstance().getSrcAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_address = 3;</code>
-       * @param value The bytes for srcAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        srcAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object dstAddress_ = "";
-      /**
-       * <code>string dst_address = 4;</code>
-       * @return The dstAddress.
-       */
-      public java.lang.String getDstAddress() {
-        java.lang.Object ref = dstAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          dstAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string dst_address = 4;</code>
-       * @return The bytes for dstAddress.
-       */
-      public com.google.protobuf.ByteString
-          getDstAddressBytes() {
-        java.lang.Object ref = dstAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          dstAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string dst_address = 4;</code>
-       * @param value The dstAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        dstAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_address = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstAddress() {
-        
-        dstAddress_ = getDefaultInstance().getDstAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_address = 4;</code>
-       * @param value The bytes for dstAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        dstAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int srcPort_ ;
-      /**
-       * <code>uint32 src_port = 5;</code>
-       * @return The srcPort.
-       */
-      @java.lang.Override
-      public int getSrcPort() {
-        return srcPort_;
-      }
-      /**
-       * <code>uint32 src_port = 5;</code>
-       * @param value The srcPort to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcPort(int value) {
-        
-        srcPort_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 src_port = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcPort() {
-        
-        srcPort_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int dstPort_ ;
-      /**
-       * <code>uint32 dst_port = 6;</code>
-       * @return The dstPort.
-       */
-      @java.lang.Override
-      public int getDstPort() {
-        return dstPort_;
-      }
-      /**
-       * <code>uint32 dst_port = 6;</code>
-       * @param value The dstPort to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstPort(int value) {
-        
-        dstPort_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 dst_port = 6;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstPort() {
-        
-        dstPort_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int startMplsLabel_ ;
-      /**
-       * <code>uint32 start_mpls_label = 7;</code>
-       * @return The startMplsLabel.
-       */
-      @java.lang.Override
-      public int getStartMplsLabel() {
-        return startMplsLabel_;
-      }
-      /**
-       * <code>uint32 start_mpls_label = 7;</code>
-       * @param value The startMplsLabel to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStartMplsLabel(int value) {
-        
-        startMplsLabel_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 start_mpls_label = 7;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearStartMplsLabel() {
-        
-        startMplsLabel_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int endMplsLabel_ ;
-      /**
-       * <code>uint32 end_mpls_label = 8;</code>
-       * @return The endMplsLabel.
-       */
-      @java.lang.Override
-      public int getEndMplsLabel() {
-        return endMplsLabel_;
-      }
-      /**
-       * <code>uint32 end_mpls_label = 8;</code>
-       * @param value The endMplsLabel to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndMplsLabel(int value) {
-        
-        endMplsLabel_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 end_mpls_label = 8;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEndMplsLabel() {
-        
-        endMplsLabel_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:acl.AclMatch)
-    }
+        private int dstPort_ = 0;
 
-    // @@protoc_insertion_point(class_scope:acl.AclMatch)
-    private static final acl.Acl.AclMatch DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new acl.Acl.AclMatch();
-    }
+        /**
+         * <code>uint32 dst_port = 6;</code>
+         * @return The dstPort.
+         */
+        @java.lang.Override
+        public int getDstPort() {
+            return dstPort_;
+        }
 
-    public static acl.Acl.AclMatch getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int START_MPLS_LABEL_FIELD_NUMBER = 7;
 
-    private static final com.google.protobuf.Parser<AclMatch>
-        PARSER = new com.google.protobuf.AbstractParser<AclMatch>() {
-      @java.lang.Override
-      public AclMatch parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AclMatch(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AclMatch> parser() {
-      return PARSER;
-    }
+        private int startMplsLabel_ = 0;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AclMatch> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>uint32 start_mpls_label = 7;</code>
+         * @return The startMplsLabel.
+         */
+        @java.lang.Override
+        public int getStartMplsLabel() {
+            return startMplsLabel_;
+        }
 
-    @java.lang.Override
-    public acl.Acl.AclMatch getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int END_MPLS_LABEL_FIELD_NUMBER = 8;
 
-  }
+        private int endMplsLabel_ = 0;
 
-  public interface AclActionOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:acl.AclAction)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>uint32 end_mpls_label = 8;</code>
+         * @return The endMplsLabel.
+         */
+        @java.lang.Override
+        public int getEndMplsLabel() {
+            return endMplsLabel_;
+        }
 
-    /**
-     * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-     * @return The enum numeric value on the wire for forwardAction.
-     */
-    int getForwardActionValue();
-    /**
-     * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-     * @return The forwardAction.
-     */
-    acl.Acl.AclForwardActionEnum getForwardAction();
+        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 (dscp_ != 0) {
+                output.writeUInt32(1, dscp_);
+            }
+            if (protocol_ != 0) {
+                output.writeUInt32(2, protocol_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, srcAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, dstAddress_);
+            }
+            if (srcPort_ != 0) {
+                output.writeUInt32(5, srcPort_);
+            }
+            if (dstPort_ != 0) {
+                output.writeUInt32(6, dstPort_);
+            }
+            if (startMplsLabel_ != 0) {
+                output.writeUInt32(7, startMplsLabel_);
+            }
+            if (endMplsLabel_ != 0) {
+                output.writeUInt32(8, endMplsLabel_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (dscp_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, dscp_);
+            }
+            if (protocol_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, protocol_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, srcAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, dstAddress_);
+            }
+            if (srcPort_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, srcPort_);
+            }
+            if (dstPort_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, dstPort_);
+            }
+            if (startMplsLabel_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(7, startMplsLabel_);
+            }
+            if (endMplsLabel_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(8, endMplsLabel_);
+            }
+            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 acl.Acl.AclMatch)) {
+                return super.equals(obj);
+            }
+            acl.Acl.AclMatch other = (acl.Acl.AclMatch) obj;
+            if (getDscp() != other.getDscp())
+                return false;
+            if (getProtocol() != other.getProtocol())
+                return false;
+            if (!getSrcAddress().equals(other.getSrcAddress()))
+                return false;
+            if (!getDstAddress().equals(other.getDstAddress()))
+                return false;
+            if (getSrcPort() != other.getSrcPort())
+                return false;
+            if (getDstPort() != other.getDstPort())
+                return false;
+            if (getStartMplsLabel() != other.getStartMplsLabel())
+                return false;
+            if (getEndMplsLabel() != other.getEndMplsLabel())
+                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) + DSCP_FIELD_NUMBER;
+            hash = (53 * hash) + getDscp();
+            hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
+            hash = (53 * hash) + getProtocol();
+            hash = (37 * hash) + SRC_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcAddress().hashCode();
+            hash = (37 * hash) + DST_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getDstAddress().hashCode();
+            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcPort();
+            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getDstPort();
+            hash = (37 * hash) + START_MPLS_LABEL_FIELD_NUMBER;
+            hash = (53 * hash) + getStartMplsLabel();
+            hash = (37 * hash) + END_MPLS_LABEL_FIELD_NUMBER;
+            hash = (53 * hash) + getEndMplsLabel();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static acl.Acl.AclMatch parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclMatch parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclMatch parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclMatch parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(acl.Acl.AclMatch prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code acl.AclMatch}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclMatch)
+        acl.Acl.AclMatchOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return acl.Acl.internal_static_acl_AclMatch_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return acl.Acl.internal_static_acl_AclMatch_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclMatch.class, acl.Acl.AclMatch.Builder.class);
+            }
+
+            // Construct using acl.Acl.AclMatch.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                dscp_ = 0;
+                protocol_ = 0;
+                srcAddress_ = "";
+                dstAddress_ = "";
+                srcPort_ = 0;
+                dstPort_ = 0;
+                startMplsLabel_ = 0;
+                endMplsLabel_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return acl.Acl.internal_static_acl_AclMatch_descriptor;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclMatch getDefaultInstanceForType() {
+                return acl.Acl.AclMatch.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclMatch build() {
+                acl.Acl.AclMatch result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclMatch buildPartial() {
+                acl.Acl.AclMatch result = new acl.Acl.AclMatch(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(acl.Acl.AclMatch result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.dscp_ = dscp_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.protocol_ = protocol_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.srcAddress_ = srcAddress_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.dstAddress_ = dstAddress_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.srcPort_ = srcPort_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.dstPort_ = dstPort_;
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.startMplsLabel_ = startMplsLabel_;
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.endMplsLabel_ = endMplsLabel_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof acl.Acl.AclMatch) {
+                    return mergeFrom((acl.Acl.AclMatch) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(acl.Acl.AclMatch other) {
+                if (other == acl.Acl.AclMatch.getDefaultInstance())
+                    return this;
+                if (other.getDscp() != 0) {
+                    setDscp(other.getDscp());
+                }
+                if (other.getProtocol() != 0) {
+                    setProtocol(other.getProtocol());
+                }
+                if (!other.getSrcAddress().isEmpty()) {
+                    srcAddress_ = other.srcAddress_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (!other.getDstAddress().isEmpty()) {
+                    dstAddress_ = other.dstAddress_;
+                    bitField0_ |= 0x00000008;
+                    onChanged();
+                }
+                if (other.getSrcPort() != 0) {
+                    setSrcPort(other.getSrcPort());
+                }
+                if (other.getDstPort() != 0) {
+                    setDstPort(other.getDstPort());
+                }
+                if (other.getStartMplsLabel() != 0) {
+                    setStartMplsLabel(other.getStartMplsLabel());
+                }
+                if (other.getEndMplsLabel() != 0) {
+                    setEndMplsLabel(other.getEndMplsLabel());
+                }
+                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:
+                                {
+                                    dscp_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    protocol_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 26:
+                                {
+                                    srcAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    dstAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 40:
+                                {
+                                    srcPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    dstPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            case 56:
+                                {
+                                    startMplsLabel_ = input.readUInt32();
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 56
+                            case 64:
+                                {
+                                    endMplsLabel_ = input.readUInt32();
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 64
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int dscp_;
+
+            /**
+             * <code>uint32 dscp = 1;</code>
+             * @return The dscp.
+             */
+            @java.lang.Override
+            public int getDscp() {
+                return dscp_;
+            }
+
+            /**
+             * <code>uint32 dscp = 1;</code>
+             * @param value The dscp to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDscp(int value) {
+                dscp_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 dscp = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDscp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                dscp_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int protocol_;
+
+            /**
+             * <code>uint32 protocol = 2;</code>
+             * @return The protocol.
+             */
+            @java.lang.Override
+            public int getProtocol() {
+                return protocol_;
+            }
+
+            /**
+             * <code>uint32 protocol = 2;</code>
+             * @param value The protocol to set.
+             * @return This builder for chaining.
+             */
+            public Builder setProtocol(int value) {
+                protocol_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 protocol = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearProtocol() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                protocol_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object srcAddress_ = "";
+
+            /**
+             * <code>string src_address = 3;</code>
+             * @return The srcAddress.
+             */
+            public java.lang.String getSrcAddress() {
+                java.lang.Object ref = srcAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    srcAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string src_address = 3;</code>
+             * @return The bytes for srcAddress.
+             */
+            public com.google.protobuf.ByteString getSrcAddressBytes() {
+                java.lang.Object ref = srcAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    srcAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string src_address = 3;</code>
+             * @param value The srcAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                srcAddress_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_address = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcAddress() {
+                srcAddress_ = getDefaultInstance().getSrcAddress();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_address = 3;</code>
+             * @param value The bytes for srcAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                srcAddress_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object dstAddress_ = "";
+
+            /**
+             * <code>string dst_address = 4;</code>
+             * @return The dstAddress.
+             */
+            public java.lang.String getDstAddress() {
+                java.lang.Object ref = dstAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    dstAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_address = 4;</code>
+             * @return The bytes for dstAddress.
+             */
+            public com.google.protobuf.ByteString getDstAddressBytes() {
+                java.lang.Object ref = dstAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    dstAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_address = 4;</code>
+             * @param value The dstAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                dstAddress_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_address = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstAddress() {
+                dstAddress_ = getDefaultInstance().getDstAddress();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_address = 4;</code>
+             * @param value The bytes for dstAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                dstAddress_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            private int srcPort_;
+
+            /**
+             * <code>uint32 src_port = 5;</code>
+             * @return The srcPort.
+             */
+            @java.lang.Override
+            public int getSrcPort() {
+                return srcPort_;
+            }
+
+            /**
+             * <code>uint32 src_port = 5;</code>
+             * @param value The srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPort(int value) {
+                srcPort_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 src_port = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcPort() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                srcPort_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int dstPort_;
+
+            /**
+             * <code>uint32 dst_port = 6;</code>
+             * @return The dstPort.
+             */
+            @java.lang.Override
+            public int getDstPort() {
+                return dstPort_;
+            }
+
+            /**
+             * <code>uint32 dst_port = 6;</code>
+             * @param value The dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPort(int value) {
+                dstPort_ = value;
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 dst_port = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstPort() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                dstPort_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int startMplsLabel_;
+
+            /**
+             * <code>uint32 start_mpls_label = 7;</code>
+             * @return The startMplsLabel.
+             */
+            @java.lang.Override
+            public int getStartMplsLabel() {
+                return startMplsLabel_;
+            }
+
+            /**
+             * <code>uint32 start_mpls_label = 7;</code>
+             * @param value The startMplsLabel to set.
+             * @return This builder for chaining.
+             */
+            public Builder setStartMplsLabel(int value) {
+                startMplsLabel_ = value;
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 start_mpls_label = 7;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearStartMplsLabel() {
+                bitField0_ = (bitField0_ & ~0x00000040);
+                startMplsLabel_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int endMplsLabel_;
+
+            /**
+             * <code>uint32 end_mpls_label = 8;</code>
+             * @return The endMplsLabel.
+             */
+            @java.lang.Override
+            public int getEndMplsLabel() {
+                return endMplsLabel_;
+            }
+
+            /**
+             * <code>uint32 end_mpls_label = 8;</code>
+             * @param value The endMplsLabel to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndMplsLabel(int value) {
+                endMplsLabel_ = value;
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 end_mpls_label = 8;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEndMplsLabel() {
+                bitField0_ = (bitField0_ & ~0x00000080);
+                endMplsLabel_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:acl.AclMatch)
+        }
+
+        // @@protoc_insertion_point(class_scope:acl.AclMatch)
+        private static final acl.Acl.AclMatch DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new acl.Acl.AclMatch();
+        }
+
+        public static acl.Acl.AclMatch getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<AclMatch> PARSER = new com.google.protobuf.AbstractParser<AclMatch>() {
+
+            @java.lang.Override
+            public AclMatch 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<AclMatch> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<AclMatch> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public acl.Acl.AclMatch getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface AclActionOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclAction)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+         * @return The enum numeric value on the wire for forwardAction.
+         */
+        int getForwardActionValue();
+
+        /**
+         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+         * @return The forwardAction.
+         */
+        acl.Acl.AclForwardActionEnum getForwardAction();
+
+        /**
+         * <code>.acl.AclLogActionEnum log_action = 2;</code>
+         * @return The enum numeric value on the wire for logAction.
+         */
+        int getLogActionValue();
+
+        /**
+         * <code>.acl.AclLogActionEnum log_action = 2;</code>
+         * @return The logAction.
+         */
+        acl.Acl.AclLogActionEnum getLogAction();
+    }
 
     /**
-     * <code>.acl.AclLogActionEnum log_action = 2;</code>
-     * @return The enum numeric value on the wire for logAction.
-     */
-    int getLogActionValue();
-    /**
-     * <code>.acl.AclLogActionEnum log_action = 2;</code>
-     * @return The logAction.
+     * Protobuf type {@code acl.AclAction}
      */
-    acl.Acl.AclLogActionEnum getLogAction();
-  }
-  /**
-   * Protobuf type {@code acl.AclAction}
-   */
-  public static final class AclAction extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:acl.AclAction)
-      AclActionOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AclAction.newBuilder() to construct.
-    private AclAction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
+    public static final class AclAction extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclAction)
+    AclActionOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use AclAction.newBuilder() to construct.
+        private AclAction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private AclAction() {
+            forwardAction_ = 0;
+            logAction_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AclAction();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return acl.Acl.internal_static_acl_AclAction_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
+        }
+
+        public static final int FORWARD_ACTION_FIELD_NUMBER = 1;
+
+        private int forwardAction_ = 0;
+
+        /**
+         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+         * @return The enum numeric value on the wire for forwardAction.
+         */
+        @java.lang.Override
+        public int getForwardActionValue() {
+            return forwardAction_;
+        }
+
+        /**
+         * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+         * @return The forwardAction.
+         */
+        @java.lang.Override
+        public acl.Acl.AclForwardActionEnum getForwardAction() {
+            acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+            return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int LOG_ACTION_FIELD_NUMBER = 2;
+
+        private int logAction_ = 0;
+
+        /**
+         * <code>.acl.AclLogActionEnum log_action = 2;</code>
+         * @return The enum numeric value on the wire for logAction.
+         */
+        @java.lang.Override
+        public int getLogActionValue() {
+            return logAction_;
+        }
+
+        /**
+         * <code>.acl.AclLogActionEnum log_action = 2;</code>
+         * @return The logAction.
+         */
+        @java.lang.Override
+        public acl.Acl.AclLogActionEnum getLogAction() {
+            acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+            return result == null ? acl.Acl.AclLogActionEnum.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 (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
+                output.writeEnum(1, forwardAction_);
+            }
+            if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
+                output.writeEnum(2, logAction_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, forwardAction_);
+            }
+            if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, logAction_);
+            }
+            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 acl.Acl.AclAction)) {
+                return super.equals(obj);
+            }
+            acl.Acl.AclAction other = (acl.Acl.AclAction) obj;
+            if (forwardAction_ != other.forwardAction_)
+                return false;
+            if (logAction_ != other.logAction_)
+                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) + FORWARD_ACTION_FIELD_NUMBER;
+            hash = (53 * hash) + forwardAction_;
+            hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER;
+            hash = (53 * hash) + logAction_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static acl.Acl.AclAction parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclAction parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclAction parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclAction parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclAction parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclAction parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclAction parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclAction parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclAction parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclAction parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclAction parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclAction parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(acl.Acl.AclAction prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code acl.AclAction}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclAction)
+        acl.Acl.AclActionOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return acl.Acl.internal_static_acl_AclAction_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
+            }
+
+            // Construct using acl.Acl.AclAction.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                forwardAction_ = 0;
+                logAction_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return acl.Acl.internal_static_acl_AclAction_descriptor;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclAction getDefaultInstanceForType() {
+                return acl.Acl.AclAction.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclAction build() {
+                acl.Acl.AclAction result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclAction buildPartial() {
+                acl.Acl.AclAction result = new acl.Acl.AclAction(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(acl.Acl.AclAction result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.forwardAction_ = forwardAction_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.logAction_ = logAction_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof acl.Acl.AclAction) {
+                    return mergeFrom((acl.Acl.AclAction) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(acl.Acl.AclAction other) {
+                if (other == acl.Acl.AclAction.getDefaultInstance())
+                    return this;
+                if (other.forwardAction_ != 0) {
+                    setForwardActionValue(other.getForwardActionValue());
+                }
+                if (other.logAction_ != 0) {
+                    setLogActionValue(other.getLogActionValue());
+                }
+                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:
+                                {
+                                    forwardAction_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    logAction_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int forwardAction_ = 0;
+
+            /**
+             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+             * @return The enum numeric value on the wire for forwardAction.
+             */
+            @java.lang.Override
+            public int getForwardActionValue() {
+                return forwardAction_;
+            }
+
+            /**
+             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+             * @param value The enum numeric value on the wire for forwardAction to set.
+             * @return This builder for chaining.
+             */
+            public Builder setForwardActionValue(int value) {
+                forwardAction_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+             * @return The forwardAction.
+             */
+            @java.lang.Override
+            public acl.Acl.AclForwardActionEnum getForwardAction() {
+                acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.forNumber(forwardAction_);
+                return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+             * @param value The forwardAction to set.
+             * @return This builder for chaining.
+             */
+            public Builder setForwardAction(acl.Acl.AclForwardActionEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                forwardAction_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearForwardAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                forwardAction_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int logAction_ = 0;
+
+            /**
+             * <code>.acl.AclLogActionEnum log_action = 2;</code>
+             * @return The enum numeric value on the wire for logAction.
+             */
+            @java.lang.Override
+            public int getLogActionValue() {
+                return logAction_;
+            }
+
+            /**
+             * <code>.acl.AclLogActionEnum log_action = 2;</code>
+             * @param value The enum numeric value on the wire for logAction to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLogActionValue(int value) {
+                logAction_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclLogActionEnum log_action = 2;</code>
+             * @return The logAction.
+             */
+            @java.lang.Override
+            public acl.Acl.AclLogActionEnum getLogAction() {
+                acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.forNumber(logAction_);
+                return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.acl.AclLogActionEnum log_action = 2;</code>
+             * @param value The logAction to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLogAction(acl.Acl.AclLogActionEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000002;
+                logAction_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclLogActionEnum log_action = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLogAction() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                logAction_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:acl.AclAction)
+        }
+
+        // @@protoc_insertion_point(class_scope:acl.AclAction)
+        private static final acl.Acl.AclAction DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new acl.Acl.AclAction();
+        }
+
+        public static acl.Acl.AclAction getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<AclAction> PARSER = new com.google.protobuf.AbstractParser<AclAction>() {
+
+            @java.lang.Override
+            public AclAction 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<AclAction> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<AclAction> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public acl.Acl.AclAction getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
-    private AclAction() {
-      forwardAction_ = 0;
-      logAction_ = 0;
+
+    public interface AclEntryOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclEntry)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>uint32 sequence_id = 1;</code>
+         * @return The sequenceId.
+         */
+        int getSequenceId();
+
+        /**
+         * <code>string description = 2;</code>
+         * @return The description.
+         */
+        java.lang.String getDescription();
+
+        /**
+         * <code>string description = 2;</code>
+         * @return The bytes for description.
+         */
+        com.google.protobuf.ByteString getDescriptionBytes();
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         * @return Whether the match field is set.
+         */
+        boolean hasMatch();
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         * @return The match.
+         */
+        acl.Acl.AclMatch getMatch();
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         */
+        acl.Acl.AclMatchOrBuilder getMatchOrBuilder();
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         * @return Whether the action field is set.
+         */
+        boolean hasAction();
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         * @return The action.
+         */
+        acl.Acl.AclAction getAction();
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         */
+        acl.Acl.AclActionOrBuilder getActionOrBuilder();
     }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AclAction();
-    }
+    /**
+     * Protobuf type {@code acl.AclEntry}
+     */
+    public static final class AclEntry extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclEntry)
+    AclEntryOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use AclEntry.newBuilder() to construct.
+        private AclEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private AclEntry() {
+            description_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AclEntry();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return acl.Acl.internal_static_acl_AclEntry_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
+        }
+
+        public static final int SEQUENCE_ID_FIELD_NUMBER = 1;
+
+        private int sequenceId_ = 0;
+
+        /**
+         * <code>uint32 sequence_id = 1;</code>
+         * @return The sequenceId.
+         */
+        @java.lang.Override
+        public int getSequenceId() {
+            return sequenceId_;
+        }
+
+        public static final int DESCRIPTION_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object description_ = "";
+
+        /**
+         * <code>string description = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string description = 2;</code>
+         * @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 MATCH_FIELD_NUMBER = 3;
+
+        private acl.Acl.AclMatch match_;
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         * @return Whether the match field is set.
+         */
+        @java.lang.Override
+        public boolean hasMatch() {
+            return match_ != null;
+        }
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         * @return The match.
+         */
+        @java.lang.Override
+        public acl.Acl.AclMatch getMatch() {
+            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+        }
+
+        /**
+         * <code>.acl.AclMatch match = 3;</code>
+         */
+        @java.lang.Override
+        public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
+            return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+        }
+
+        public static final int ACTION_FIELD_NUMBER = 4;
+
+        private acl.Acl.AclAction action_;
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         * @return Whether the action field is set.
+         */
+        @java.lang.Override
+        public boolean hasAction() {
+            return action_ != null;
+        }
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         * @return The action.
+         */
+        @java.lang.Override
+        public acl.Acl.AclAction getAction() {
+            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+        }
+
+        /**
+         * <code>.acl.AclAction action = 4;</code>
+         */
+        @java.lang.Override
+        public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
+            return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+        }
+
+        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 (sequenceId_ != 0) {
+                output.writeUInt32(1, sequenceId_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
+            }
+            if (match_ != null) {
+                output.writeMessage(3, getMatch());
+            }
+            if (action_ != null) {
+                output.writeMessage(4, getAction());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (sequenceId_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, sequenceId_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
+            }
+            if (match_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getMatch());
+            }
+            if (action_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAction());
+            }
+            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 acl.Acl.AclEntry)) {
+                return super.equals(obj);
+            }
+            acl.Acl.AclEntry other = (acl.Acl.AclEntry) obj;
+            if (getSequenceId() != other.getSequenceId())
+                return false;
+            if (!getDescription().equals(other.getDescription()))
+                return false;
+            if (hasMatch() != other.hasMatch())
+                return false;
+            if (hasMatch()) {
+                if (!getMatch().equals(other.getMatch()))
+                    return false;
+            }
+            if (hasAction() != other.hasAction())
+                return false;
+            if (hasAction()) {
+                if (!getAction().equals(other.getAction()))
+                    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) + SEQUENCE_ID_FIELD_NUMBER;
+            hash = (53 * hash) + getSequenceId();
+            hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
+            hash = (53 * hash) + getDescription().hashCode();
+            if (hasMatch()) {
+                hash = (37 * hash) + MATCH_FIELD_NUMBER;
+                hash = (53 * hash) + getMatch().hashCode();
+            }
+            if (hasAction()) {
+                hash = (37 * hash) + ACTION_FIELD_NUMBER;
+                hash = (53 * hash) + getAction().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static acl.Acl.AclEntry parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclEntry parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(acl.Acl.AclEntry prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code acl.AclEntry}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclEntry)
+        acl.Acl.AclEntryOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return acl.Acl.internal_static_acl_AclEntry_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
+            }
+
+            // Construct using acl.Acl.AclEntry.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                sequenceId_ = 0;
+                description_ = "";
+                match_ = null;
+                if (matchBuilder_ != null) {
+                    matchBuilder_.dispose();
+                    matchBuilder_ = null;
+                }
+                action_ = null;
+                if (actionBuilder_ != null) {
+                    actionBuilder_.dispose();
+                    actionBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return acl.Acl.internal_static_acl_AclEntry_descriptor;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclEntry getDefaultInstanceForType() {
+                return acl.Acl.AclEntry.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclEntry build() {
+                acl.Acl.AclEntry result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AclAction(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              forwardAction_ = rawValue;
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-
-              logAction_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return acl.Acl.internal_static_acl_AclAction_descriptor;
-    }
+            @java.lang.Override
+            public acl.Acl.AclEntry buildPartial() {
+                acl.Acl.AclEntry result = new acl.Acl.AclEntry(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
-    }
+            private void buildPartial0(acl.Acl.AclEntry result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sequenceId_ = sequenceId_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.description_ = description_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.match_ = matchBuilder_ == null ? match_ : matchBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.action_ = actionBuilder_ == null ? action_ : actionBuilder_.build();
+                }
+            }
 
-    public static final int FORWARD_ACTION_FIELD_NUMBER = 1;
-    private int forwardAction_;
-    /**
-     * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-     * @return The enum numeric value on the wire for forwardAction.
-     */
-    @java.lang.Override public int getForwardActionValue() {
-      return forwardAction_;
-    }
-    /**
-     * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-     * @return The forwardAction.
-     */
-    @java.lang.Override public acl.Acl.AclForwardActionEnum getForwardAction() {
-      @SuppressWarnings("deprecation")
-      acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
-      return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof acl.Acl.AclEntry) {
+                    return mergeFrom((acl.Acl.AclEntry) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(acl.Acl.AclEntry other) {
+                if (other == acl.Acl.AclEntry.getDefaultInstance())
+                    return this;
+                if (other.getSequenceId() != 0) {
+                    setSequenceId(other.getSequenceId());
+                }
+                if (!other.getDescription().isEmpty()) {
+                    description_ = other.description_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.hasMatch()) {
+                    mergeMatch(other.getMatch());
+                }
+                if (other.hasAction()) {
+                    mergeAction(other.getAction());
+                }
+                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:
+                                {
+                                    sequenceId_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    description_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getMatchFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getActionFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int sequenceId_;
+
+            /**
+             * <code>uint32 sequence_id = 1;</code>
+             * @return The sequenceId.
+             */
+            @java.lang.Override
+            public int getSequenceId() {
+                return sequenceId_;
+            }
+
+            /**
+             * <code>uint32 sequence_id = 1;</code>
+             * @param value The sequenceId to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSequenceId(int value) {
+                sequenceId_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 sequence_id = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSequenceId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sequenceId_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object description_ = "";
+
+            /**
+             * <code>string description = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string description = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string description = 2;</code>
+             * @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;
+            }
+
+            /**
+             * <code>string description = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDescription() {
+                description_ = getDefaultInstance().getDescription();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string description = 2;</code>
+             * @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 acl.Acl.AclMatch match_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> matchBuilder_;
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             * @return Whether the match field is set.
+             */
+            public boolean hasMatch() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             * @return The match.
+             */
+            public acl.Acl.AclMatch getMatch() {
+                if (matchBuilder_ == null) {
+                    return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+                } else {
+                    return matchBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public Builder setMatch(acl.Acl.AclMatch value) {
+                if (matchBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    match_ = value;
+                } else {
+                    matchBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public Builder setMatch(acl.Acl.AclMatch.Builder builderForValue) {
+                if (matchBuilder_ == null) {
+                    match_ = builderForValue.build();
+                } else {
+                    matchBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public Builder mergeMatch(acl.Acl.AclMatch value) {
+                if (matchBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && match_ != null && match_ != acl.Acl.AclMatch.getDefaultInstance()) {
+                        getMatchBuilder().mergeFrom(value);
+                    } else {
+                        match_ = value;
+                    }
+                } else {
+                    matchBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public Builder clearMatch() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                match_ = null;
+                if (matchBuilder_ != null) {
+                    matchBuilder_.dispose();
+                    matchBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public acl.Acl.AclMatch.Builder getMatchBuilder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getMatchFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
+                if (matchBuilder_ != null) {
+                    return matchBuilder_.getMessageOrBuilder();
+                } else {
+                    return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
+                }
+            }
+
+            /**
+             * <code>.acl.AclMatch match = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> getMatchFieldBuilder() {
+                if (matchBuilder_ == null) {
+                    matchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder>(getMatch(), getParentForChildren(), isClean());
+                    match_ = null;
+                }
+                return matchBuilder_;
+            }
+
+            private acl.Acl.AclAction action_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> actionBuilder_;
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             * @return Whether the action field is set.
+             */
+            public boolean hasAction() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             * @return The action.
+             */
+            public acl.Acl.AclAction getAction() {
+                if (actionBuilder_ == null) {
+                    return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+                } else {
+                    return actionBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public Builder setAction(acl.Acl.AclAction value) {
+                if (actionBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    action_ = value;
+                } else {
+                    actionBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public Builder setAction(acl.Acl.AclAction.Builder builderForValue) {
+                if (actionBuilder_ == null) {
+                    action_ = builderForValue.build();
+                } else {
+                    actionBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public Builder mergeAction(acl.Acl.AclAction value) {
+                if (actionBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && action_ != null && action_ != acl.Acl.AclAction.getDefaultInstance()) {
+                        getActionBuilder().mergeFrom(value);
+                    } else {
+                        action_ = value;
+                    }
+                } else {
+                    actionBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                action_ = null;
+                if (actionBuilder_ != null) {
+                    actionBuilder_.dispose();
+                    actionBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public acl.Acl.AclAction.Builder getActionBuilder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getActionFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
+                if (actionBuilder_ != null) {
+                    return actionBuilder_.getMessageOrBuilder();
+                } else {
+                    return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
+                }
+            }
+
+            /**
+             * <code>.acl.AclAction action = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> getActionFieldBuilder() {
+                if (actionBuilder_ == null) {
+                    actionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder>(getAction(), getParentForChildren(), isClean());
+                    action_ = null;
+                }
+                return actionBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:acl.AclEntry)
+        }
+
+        // @@protoc_insertion_point(class_scope:acl.AclEntry)
+        private static final acl.Acl.AclEntry DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new acl.Acl.AclEntry();
+        }
+
+        public static acl.Acl.AclEntry getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<AclEntry> PARSER = new com.google.protobuf.AbstractParser<AclEntry>() {
+
+            @java.lang.Override
+            public AclEntry 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<AclEntry> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<AclEntry> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public acl.Acl.AclEntry getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static final int LOG_ACTION_FIELD_NUMBER = 2;
-    private int logAction_;
-    /**
-     * <code>.acl.AclLogActionEnum log_action = 2;</code>
-     * @return The enum numeric value on the wire for logAction.
-     */
-    @java.lang.Override public int getLogActionValue() {
-      return logAction_;
+    public interface AclRuleSetOrBuilder extends // @@protoc_insertion_point(interface_extends:acl.AclRuleSet)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 1;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>.acl.AclRuleTypeEnum type = 2;</code>
+         * @return The enum numeric value on the wire for type.
+         */
+        int getTypeValue();
+
+        /**
+         * <code>.acl.AclRuleTypeEnum type = 2;</code>
+         * @return The type.
+         */
+        acl.Acl.AclRuleTypeEnum getType();
+
+        /**
+         * <code>string description = 3;</code>
+         * @return The description.
+         */
+        java.lang.String getDescription();
+
+        /**
+         * <code>string description = 3;</code>
+         * @return The bytes for description.
+         */
+        com.google.protobuf.ByteString getDescriptionBytes();
+
+        /**
+         * <code>string user_id = 4;</code>
+         * @return The userId.
+         */
+        java.lang.String getUserId();
+
+        /**
+         * <code>string user_id = 4;</code>
+         * @return The bytes for userId.
+         */
+        com.google.protobuf.ByteString getUserIdBytes();
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        java.util.List<acl.Acl.AclEntry> getEntriesList();
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        acl.Acl.AclEntry getEntries(int index);
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        int getEntriesCount();
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList();
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index);
     }
+
     /**
-     * <code>.acl.AclLogActionEnum log_action = 2;</code>
-     * @return The logAction.
+     * Protobuf type {@code acl.AclRuleSet}
      */
-    @java.lang.Override public acl.Acl.AclLogActionEnum getLogAction() {
-      @SuppressWarnings("deprecation")
-      acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
-      return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
-    }
+    public static final class AclRuleSet extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:acl.AclRuleSet)
+    AclRuleSetOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use AclRuleSet.newBuilder() to construct.
+        private AclRuleSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
-        output.writeEnum(1, forwardAction_);
-      }
-      if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
-        output.writeEnum(2, logAction_);
-      }
-      unknownFields.writeTo(output);
-    }
+        private AclRuleSet() {
+            name_ = "";
+            type_ = 0;
+            description_ = "";
+            userId_ = "";
+            entries_ = java.util.Collections.emptyList();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (forwardAction_ != acl.Acl.AclForwardActionEnum.ACLFORWARDINGACTION_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, forwardAction_);
-      }
-      if (logAction_ != acl.Acl.AclLogActionEnum.ACLLOGACTION_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, logAction_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AclRuleSet();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof acl.Acl.AclAction)) {
-        return super.equals(obj);
-      }
-      acl.Acl.AclAction other = (acl.Acl.AclAction) obj;
-
-      if (forwardAction_ != other.forwardAction_) return false;
-      if (logAction_ != other.logAction_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + FORWARD_ACTION_FIELD_NUMBER;
-      hash = (53 * hash) + forwardAction_;
-      hash = (37 * hash) + LOG_ACTION_FIELD_NUMBER;
-      hash = (53 * hash) + logAction_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
+        }
 
-    public static acl.Acl.AclAction parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclAction parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclAction parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclAction parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclAction parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclAction parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int NAME_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 1;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 1;</code>
+         * @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 TYPE_FIELD_NUMBER = 2;
+
+        private int type_ = 0;
+
+        /**
+         * <code>.acl.AclRuleTypeEnum type = 2;</code>
+         * @return The enum numeric value on the wire for type.
+         */
+        @java.lang.Override
+        public int getTypeValue() {
+            return type_;
+        }
+
+        /**
+         * <code>.acl.AclRuleTypeEnum type = 2;</code>
+         * @return The type.
+         */
+        @java.lang.Override
+        public acl.Acl.AclRuleTypeEnum getType() {
+            acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+            return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int DESCRIPTION_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object description_ = "";
+
+        /**
+         * <code>string description = 3;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string description = 3;</code>
+         * @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 USER_ID_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object userId_ = "";
+
+        /**
+         * <code>string user_id = 4;</code>
+         * @return The userId.
+         */
+        @java.lang.Override
+        public java.lang.String getUserId() {
+            java.lang.Object ref = userId_;
+            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();
+                userId_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string user_id = 4;</code>
+         * @return The bytes for userId.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getUserIdBytes() {
+            java.lang.Object ref = userId_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                userId_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int ENTRIES_FIELD_NUMBER = 5;
+
+        @SuppressWarnings("serial")
+        private java.util.List<acl.Acl.AclEntry> entries_;
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<acl.Acl.AclEntry> getEntriesList() {
+            return entries_;
+        }
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList() {
+            return entries_;
+        }
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        @java.lang.Override
+        public int getEntriesCount() {
+            return entries_.size();
+        }
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        @java.lang.Override
+        public acl.Acl.AclEntry getEntries(int index) {
+            return entries_.get(index);
+        }
+
+        /**
+         * <code>repeated .acl.AclEntry entries = 5;</code>
+         */
+        @java.lang.Override
+        public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index) {
+            return entries_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+            }
+            if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
+                output.writeEnum(2, type_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_);
+            }
+            for (int i = 0; i < entries_.size(); i++) {
+                output.writeMessage(5, entries_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+            }
+            if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_);
+            }
+            for (int i = 0; i < entries_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, entries_.get(i));
+            }
+            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 acl.Acl.AclRuleSet)) {
+                return super.equals(obj);
+            }
+            acl.Acl.AclRuleSet other = (acl.Acl.AclRuleSet) obj;
+            if (!getName().equals(other.getName()))
+                return false;
+            if (type_ != other.type_)
+                return false;
+            if (!getDescription().equals(other.getDescription()))
+                return false;
+            if (!getUserId().equals(other.getUserId()))
+                return false;
+            if (!getEntriesList().equals(other.getEntriesList()))
+                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) + TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + type_;
+            hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
+            hash = (53 * hash) + getDescription().hashCode();
+            hash = (37 * hash) + USER_ID_FIELD_NUMBER;
+            hash = (53 * hash) + getUserId().hashCode();
+            if (getEntriesCount() > 0) {
+                hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
+                hash = (53 * hash) + getEntriesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclRuleSet parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclRuleSet parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static acl.Acl.AclRuleSet parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(acl.Acl.AclRuleSet prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code acl.AclRuleSet}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:acl.AclRuleSet)
+        acl.Acl.AclRuleSetOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable.ensureFieldAccessorsInitialized(acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
+            }
+
+            // Construct using acl.Acl.AclRuleSet.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                name_ = "";
+                type_ = 0;
+                description_ = "";
+                userId_ = "";
+                if (entriesBuilder_ == null) {
+                    entries_ = java.util.Collections.emptyList();
+                } else {
+                    entries_ = null;
+                    entriesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000010);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclRuleSet getDefaultInstanceForType() {
+                return acl.Acl.AclRuleSet.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclRuleSet build() {
+                acl.Acl.AclRuleSet result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public acl.Acl.AclRuleSet buildPartial() {
+                acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(acl.Acl.AclRuleSet result) {
+                if (entriesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
+                        entries_ = java.util.Collections.unmodifiableList(entries_);
+                        bitField0_ = (bitField0_ & ~0x00000010);
+                    }
+                    result.entries_ = entries_;
+                } else {
+                    result.entries_ = entriesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(acl.Acl.AclRuleSet result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.type_ = type_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.description_ = description_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.userId_ = userId_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof acl.Acl.AclRuleSet) {
+                    return mergeFrom((acl.Acl.AclRuleSet) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(acl.Acl.AclRuleSet other) {
+                if (other == acl.Acl.AclRuleSet.getDefaultInstance())
+                    return this;
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                if (other.type_ != 0) {
+                    setTypeValue(other.getTypeValue());
+                }
+                if (!other.getDescription().isEmpty()) {
+                    description_ = other.description_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (!other.getUserId().isEmpty()) {
+                    userId_ = other.userId_;
+                    bitField0_ |= 0x00000008;
+                    onChanged();
+                }
+                if (entriesBuilder_ == null) {
+                    if (!other.entries_.isEmpty()) {
+                        if (entries_.isEmpty()) {
+                            entries_ = other.entries_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                        } else {
+                            ensureEntriesIsMutable();
+                            entries_.addAll(other.entries_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.entries_.isEmpty()) {
+                        if (entriesBuilder_.isEmpty()) {
+                            entriesBuilder_.dispose();
+                            entriesBuilder_ = null;
+                            entries_ = other.entries_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                            entriesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEntriesFieldBuilder() : null;
+                        } else {
+                            entriesBuilder_.addAllMessages(other.entries_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(acl.Acl.AclAction 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
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code acl.AclAction}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:acl.AclAction)
-        acl.Acl.AclActionOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return acl.Acl.internal_static_acl_AclAction_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return acl.Acl.internal_static_acl_AclAction_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                acl.Acl.AclAction.class, acl.Acl.AclAction.Builder.class);
-      }
-
-      // Construct using acl.Acl.AclAction.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        forwardAction_ = 0;
-
-        logAction_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return acl.Acl.internal_static_acl_AclAction_descriptor;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclAction getDefaultInstanceForType() {
-        return acl.Acl.AclAction.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclAction build() {
-        acl.Acl.AclAction result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclAction buildPartial() {
-        acl.Acl.AclAction result = new acl.Acl.AclAction(this);
-        result.forwardAction_ = forwardAction_;
-        result.logAction_ = logAction_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof acl.Acl.AclAction) {
-          return mergeFrom((acl.Acl.AclAction)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(acl.Acl.AclAction other) {
-        if (other == acl.Acl.AclAction.getDefaultInstance()) return this;
-        if (other.forwardAction_ != 0) {
-          setForwardActionValue(other.getForwardActionValue());
-        }
-        if (other.logAction_ != 0) {
-          setLogActionValue(other.getLogActionValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        acl.Acl.AclAction parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (acl.Acl.AclAction) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int forwardAction_ = 0;
-      /**
-       * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-       * @return The enum numeric value on the wire for forwardAction.
-       */
-      @java.lang.Override public int getForwardActionValue() {
-        return forwardAction_;
-      }
-      /**
-       * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-       * @param value The enum numeric value on the wire for forwardAction to set.
-       * @return This builder for chaining.
-       */
-      public Builder setForwardActionValue(int value) {
-        
-        forwardAction_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-       * @return The forwardAction.
-       */
-      @java.lang.Override
-      public acl.Acl.AclForwardActionEnum getForwardAction() {
-        @SuppressWarnings("deprecation")
-        acl.Acl.AclForwardActionEnum result = acl.Acl.AclForwardActionEnum.valueOf(forwardAction_);
-        return result == null ? acl.Acl.AclForwardActionEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-       * @param value The forwardAction to set.
-       * @return This builder for chaining.
-       */
-      public Builder setForwardAction(acl.Acl.AclForwardActionEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        forwardAction_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclForwardActionEnum forward_action = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearForwardAction() {
-        
-        forwardAction_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int logAction_ = 0;
-      /**
-       * <code>.acl.AclLogActionEnum log_action = 2;</code>
-       * @return The enum numeric value on the wire for logAction.
-       */
-      @java.lang.Override public int getLogActionValue() {
-        return logAction_;
-      }
-      /**
-       * <code>.acl.AclLogActionEnum log_action = 2;</code>
-       * @param value The enum numeric value on the wire for logAction to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLogActionValue(int value) {
-        
-        logAction_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclLogActionEnum log_action = 2;</code>
-       * @return The logAction.
-       */
-      @java.lang.Override
-      public acl.Acl.AclLogActionEnum getLogAction() {
-        @SuppressWarnings("deprecation")
-        acl.Acl.AclLogActionEnum result = acl.Acl.AclLogActionEnum.valueOf(logAction_);
-        return result == null ? acl.Acl.AclLogActionEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.acl.AclLogActionEnum log_action = 2;</code>
-       * @param value The logAction to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLogAction(acl.Acl.AclLogActionEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        logAction_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclLogActionEnum log_action = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLogAction() {
-        
-        logAction_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:acl.AclAction)
-    }
+            @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 16:
+                                {
+                                    type_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 26:
+                                {
+                                    description_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    userId_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    acl.Acl.AclEntry m = input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry);
+                                    if (entriesBuilder_ == null) {
+                                        ensureEntriesIsMutable();
+                                        entries_.add(m);
+                                    } else {
+                                        entriesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:acl.AclAction)
-    private static final acl.Acl.AclAction DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new acl.Acl.AclAction();
-    }
+            private int bitField0_;
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 1;</code>
+             * @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;
+                }
+            }
 
-    public static acl.Acl.AclAction getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>string name = 1;</code>
+             * @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;
+                }
+            }
 
-    private static final com.google.protobuf.Parser<AclAction>
-        PARSER = new com.google.protobuf.AbstractParser<AclAction>() {
-      @java.lang.Override
-      public AclAction parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AclAction(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AclAction> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>string name = 1;</code>
+             * @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;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AclAction> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>string name = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public acl.Acl.AclAction getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>string name = 1;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-  }
+            private int type_ = 0;
 
-  public interface AclEntryOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:acl.AclEntry)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.acl.AclRuleTypeEnum type = 2;</code>
+             * @return The enum numeric value on the wire for type.
+             */
+            @java.lang.Override
+            public int getTypeValue() {
+                return type_;
+            }
 
-    /**
-     * <code>uint32 sequence_id = 1;</code>
-     * @return The sequenceId.
-     */
-    int getSequenceId();
+            /**
+             * <code>.acl.AclRuleTypeEnum type = 2;</code>
+             * @param value The enum numeric value on the wire for type to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTypeValue(int value) {
+                type_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>string description = 2;</code>
-     * @return The description.
-     */
-    java.lang.String getDescription();
-    /**
-     * <code>string description = 2;</code>
-     * @return The bytes for description.
-     */
-    com.google.protobuf.ByteString
-        getDescriptionBytes();
+            /**
+             * <code>.acl.AclRuleTypeEnum type = 2;</code>
+             * @return The type.
+             */
+            @java.lang.Override
+            public acl.Acl.AclRuleTypeEnum getType() {
+                acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.forNumber(type_);
+                return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
+            }
 
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     * @return Whether the match field is set.
-     */
-    boolean hasMatch();
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     * @return The match.
-     */
-    acl.Acl.AclMatch getMatch();
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     */
-    acl.Acl.AclMatchOrBuilder getMatchOrBuilder();
+            /**
+             * <code>.acl.AclRuleTypeEnum type = 2;</code>
+             * @param value The type to set.
+             * @return This builder for chaining.
+             */
+            public Builder setType(acl.Acl.AclRuleTypeEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000002;
+                type_ = value.getNumber();
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     * @return Whether the action field is set.
-     */
-    boolean hasAction();
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     * @return The action.
-     */
-    acl.Acl.AclAction getAction();
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     */
-    acl.Acl.AclActionOrBuilder getActionOrBuilder();
-  }
-  /**
-   * Protobuf type {@code acl.AclEntry}
-   */
-  public static final class AclEntry extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:acl.AclEntry)
-      AclEntryOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AclEntry.newBuilder() to construct.
-    private AclEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AclEntry() {
-      description_ = "";
-    }
+            /**
+             * <code>.acl.AclRuleTypeEnum type = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearType() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                type_ = 0;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AclEntry();
-    }
+            private java.lang.Object description_ = "";
+
+            /**
+             * <code>string description = 3;</code>
+             * @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;
+                }
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AclEntry(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              sequenceId_ = input.readUInt32();
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              description_ = s;
-              break;
-            }
-            case 26: {
-              acl.Acl.AclMatch.Builder subBuilder = null;
-              if (match_ != null) {
-                subBuilder = match_.toBuilder();
-              }
-              match_ = input.readMessage(acl.Acl.AclMatch.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(match_);
-                match_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 34: {
-              acl.Acl.AclAction.Builder subBuilder = null;
-              if (action_ != null) {
-                subBuilder = action_.toBuilder();
-              }
-              action_ = input.readMessage(acl.Acl.AclAction.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(action_);
-                action_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return acl.Acl.internal_static_acl_AclEntry_descriptor;
-    }
+            /**
+             * <code>string description = 3;</code>
+             * @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;
+                }
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
-    }
+            /**
+             * <code>string description = 3;</code>
+             * @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;
+            }
 
-    public static final int SEQUENCE_ID_FIELD_NUMBER = 1;
-    private int sequenceId_;
-    /**
-     * <code>uint32 sequence_id = 1;</code>
-     * @return The sequenceId.
-     */
-    @java.lang.Override
-    public int getSequenceId() {
-      return sequenceId_;
-    }
+            /**
+             * <code>string description = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDescription() {
+                description_ = getDefaultInstance().getDescription();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
 
-    public static final int DESCRIPTION_FIELD_NUMBER = 2;
-    private volatile java.lang.Object description_;
-    /**
-     * <code>string description = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string description = 2;</code>
-     * @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;
-      }
-    }
+            /**
+             * <code>string description = 3;</code>
+             * @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;
+            }
 
-    public static final int MATCH_FIELD_NUMBER = 3;
-    private acl.Acl.AclMatch match_;
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     * @return Whether the match field is set.
-     */
-    @java.lang.Override
-    public boolean hasMatch() {
-      return match_ != null;
-    }
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     * @return The match.
-     */
-    @java.lang.Override
-    public acl.Acl.AclMatch getMatch() {
-      return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
-    }
-    /**
-     * <code>.acl.AclMatch match = 3;</code>
-     */
-    @java.lang.Override
-    public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
-      return getMatch();
-    }
+            private java.lang.Object userId_ = "";
+
+            /**
+             * <code>string user_id = 4;</code>
+             * @return The userId.
+             */
+            public java.lang.String getUserId() {
+                java.lang.Object ref = userId_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    userId_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    public static final int ACTION_FIELD_NUMBER = 4;
-    private acl.Acl.AclAction action_;
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     * @return Whether the action field is set.
-     */
-    @java.lang.Override
-    public boolean hasAction() {
-      return action_ != null;
-    }
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     * @return The action.
-     */
-    @java.lang.Override
-    public acl.Acl.AclAction getAction() {
-      return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
-    }
-    /**
-     * <code>.acl.AclAction action = 4;</code>
-     */
-    @java.lang.Override
-    public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
-      return getAction();
-    }
+            /**
+             * <code>string user_id = 4;</code>
+             * @return The bytes for userId.
+             */
+            public com.google.protobuf.ByteString getUserIdBytes() {
+                java.lang.Object ref = userId_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    userId_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>string user_id = 4;</code>
+             * @param value The userId to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUserId(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                userId_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>string user_id = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUserId() {
+                userId_ = getDefaultInstance().getUserId();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (sequenceId_ != 0) {
-        output.writeUInt32(1, sequenceId_);
-      }
-      if (!getDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
-      }
-      if (match_ != null) {
-        output.writeMessage(3, getMatch());
-      }
-      if (action_ != null) {
-        output.writeMessage(4, getAction());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>string user_id = 4;</code>
+             * @param value The bytes for userId to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUserIdBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                userId_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (sequenceId_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(1, sequenceId_);
-      }
-      if (!getDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
-      }
-      if (match_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getMatch());
-      }
-      if (action_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getAction());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private java.util.List<acl.Acl.AclEntry> entries_ = java.util.Collections.emptyList();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof acl.Acl.AclEntry)) {
-        return super.equals(obj);
-      }
-      acl.Acl.AclEntry other = (acl.Acl.AclEntry) obj;
-
-      if (getSequenceId()
-          != other.getSequenceId()) return false;
-      if (!getDescription()
-          .equals(other.getDescription())) return false;
-      if (hasMatch() != other.hasMatch()) return false;
-      if (hasMatch()) {
-        if (!getMatch()
-            .equals(other.getMatch())) return false;
-      }
-      if (hasAction() != other.hasAction()) return false;
-      if (hasAction()) {
-        if (!getAction()
-            .equals(other.getAction())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            private void ensureEntriesIsMutable() {
+                if (!((bitField0_ & 0x00000010) != 0)) {
+                    entries_ = new java.util.ArrayList<acl.Acl.AclEntry>(entries_);
+                    bitField0_ |= 0x00000010;
+                }
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SEQUENCE_ID_FIELD_NUMBER;
-      hash = (53 * hash) + getSequenceId();
-      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getDescription().hashCode();
-      if (hasMatch()) {
-        hash = (37 * hash) + MATCH_FIELD_NUMBER;
-        hash = (53 * hash) + getMatch().hashCode();
-      }
-      if (hasAction()) {
-        hash = (37 * hash) + ACTION_FIELD_NUMBER;
-        hash = (53 * hash) + getAction().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> entriesBuilder_;
+
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public java.util.List<acl.Acl.AclEntry> getEntriesList() {
+                if (entriesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(entries_);
+                } else {
+                    return entriesBuilder_.getMessageList();
+                }
+            }
 
-    public static acl.Acl.AclEntry parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclEntry parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclEntry parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclEntry parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclEntry parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public int getEntriesCount() {
+                if (entriesBuilder_ == null) {
+                    return entries_.size();
+                } else {
+                    return entriesBuilder_.getCount();
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(acl.Acl.AclEntry prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public acl.Acl.AclEntry getEntries(int index) {
+                if (entriesBuilder_ == null) {
+                    return entries_.get(index);
+                } else {
+                    return entriesBuilder_.getMessage(index);
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code acl.AclEntry}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:acl.AclEntry)
-        acl.Acl.AclEntryOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return acl.Acl.internal_static_acl_AclEntry_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return acl.Acl.internal_static_acl_AclEntry_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                acl.Acl.AclEntry.class, acl.Acl.AclEntry.Builder.class);
-      }
-
-      // Construct using acl.Acl.AclEntry.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        sequenceId_ = 0;
-
-        description_ = "";
-
-        if (matchBuilder_ == null) {
-          match_ = null;
-        } else {
-          match_ = null;
-          matchBuilder_ = null;
-        }
-        if (actionBuilder_ == null) {
-          action_ = null;
-        } else {
-          action_ = null;
-          actionBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return acl.Acl.internal_static_acl_AclEntry_descriptor;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclEntry getDefaultInstanceForType() {
-        return acl.Acl.AclEntry.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclEntry build() {
-        acl.Acl.AclEntry result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclEntry buildPartial() {
-        acl.Acl.AclEntry result = new acl.Acl.AclEntry(this);
-        result.sequenceId_ = sequenceId_;
-        result.description_ = description_;
-        if (matchBuilder_ == null) {
-          result.match_ = match_;
-        } else {
-          result.match_ = matchBuilder_.build();
-        }
-        if (actionBuilder_ == null) {
-          result.action_ = action_;
-        } else {
-          result.action_ = actionBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof acl.Acl.AclEntry) {
-          return mergeFrom((acl.Acl.AclEntry)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(acl.Acl.AclEntry other) {
-        if (other == acl.Acl.AclEntry.getDefaultInstance()) return this;
-        if (other.getSequenceId() != 0) {
-          setSequenceId(other.getSequenceId());
-        }
-        if (!other.getDescription().isEmpty()) {
-          description_ = other.description_;
-          onChanged();
-        }
-        if (other.hasMatch()) {
-          mergeMatch(other.getMatch());
-        }
-        if (other.hasAction()) {
-          mergeAction(other.getAction());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        acl.Acl.AclEntry parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (acl.Acl.AclEntry) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int sequenceId_ ;
-      /**
-       * <code>uint32 sequence_id = 1;</code>
-       * @return The sequenceId.
-       */
-      @java.lang.Override
-      public int getSequenceId() {
-        return sequenceId_;
-      }
-      /**
-       * <code>uint32 sequence_id = 1;</code>
-       * @param value The sequenceId to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSequenceId(int value) {
-        
-        sequenceId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 sequence_id = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSequenceId() {
-        
-        sequenceId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object description_ = "";
-      /**
-       * <code>string description = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string description = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string description = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string description = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDescription() {
-        
-        description_ = getDefaultInstance().getDescription();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string description = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-
-      private acl.Acl.AclMatch match_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> matchBuilder_;
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       * @return Whether the match field is set.
-       */
-      public boolean hasMatch() {
-        return matchBuilder_ != null || match_ != null;
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       * @return The match.
-       */
-      public acl.Acl.AclMatch getMatch() {
-        if (matchBuilder_ == null) {
-          return match_ == null ? acl.Acl.AclMatch.getDefaultInstance() : match_;
-        } else {
-          return matchBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public Builder setMatch(acl.Acl.AclMatch value) {
-        if (matchBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          match_ = value;
-          onChanged();
-        } else {
-          matchBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public Builder setMatch(
-          acl.Acl.AclMatch.Builder builderForValue) {
-        if (matchBuilder_ == null) {
-          match_ = builderForValue.build();
-          onChanged();
-        } else {
-          matchBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public Builder mergeMatch(acl.Acl.AclMatch value) {
-        if (matchBuilder_ == null) {
-          if (match_ != null) {
-            match_ =
-              acl.Acl.AclMatch.newBuilder(match_).mergeFrom(value).buildPartial();
-          } else {
-            match_ = value;
-          }
-          onChanged();
-        } else {
-          matchBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public Builder clearMatch() {
-        if (matchBuilder_ == null) {
-          match_ = null;
-          onChanged();
-        } else {
-          match_ = null;
-          matchBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public acl.Acl.AclMatch.Builder getMatchBuilder() {
-        
-        onChanged();
-        return getMatchFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      public acl.Acl.AclMatchOrBuilder getMatchOrBuilder() {
-        if (matchBuilder_ != null) {
-          return matchBuilder_.getMessageOrBuilder();
-        } else {
-          return match_ == null ?
-              acl.Acl.AclMatch.getDefaultInstance() : match_;
-        }
-      }
-      /**
-       * <code>.acl.AclMatch match = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder> 
-          getMatchFieldBuilder() {
-        if (matchBuilder_ == null) {
-          matchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              acl.Acl.AclMatch, acl.Acl.AclMatch.Builder, acl.Acl.AclMatchOrBuilder>(
-                  getMatch(),
-                  getParentForChildren(),
-                  isClean());
-          match_ = null;
-        }
-        return matchBuilder_;
-      }
-
-      private acl.Acl.AclAction action_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> actionBuilder_;
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       * @return Whether the action field is set.
-       */
-      public boolean hasAction() {
-        return actionBuilder_ != null || action_ != null;
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       * @return The action.
-       */
-      public acl.Acl.AclAction getAction() {
-        if (actionBuilder_ == null) {
-          return action_ == null ? acl.Acl.AclAction.getDefaultInstance() : action_;
-        } else {
-          return actionBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public Builder setAction(acl.Acl.AclAction value) {
-        if (actionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          action_ = value;
-          onChanged();
-        } else {
-          actionBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public Builder setAction(
-          acl.Acl.AclAction.Builder builderForValue) {
-        if (actionBuilder_ == null) {
-          action_ = builderForValue.build();
-          onChanged();
-        } else {
-          actionBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public Builder mergeAction(acl.Acl.AclAction value) {
-        if (actionBuilder_ == null) {
-          if (action_ != null) {
-            action_ =
-              acl.Acl.AclAction.newBuilder(action_).mergeFrom(value).buildPartial();
-          } else {
-            action_ = value;
-          }
-          onChanged();
-        } else {
-          actionBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public Builder clearAction() {
-        if (actionBuilder_ == null) {
-          action_ = null;
-          onChanged();
-        } else {
-          action_ = null;
-          actionBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public acl.Acl.AclAction.Builder getActionBuilder() {
-        
-        onChanged();
-        return getActionFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      public acl.Acl.AclActionOrBuilder getActionOrBuilder() {
-        if (actionBuilder_ != null) {
-          return actionBuilder_.getMessageOrBuilder();
-        } else {
-          return action_ == null ?
-              acl.Acl.AclAction.getDefaultInstance() : action_;
-        }
-      }
-      /**
-       * <code>.acl.AclAction action = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder> 
-          getActionFieldBuilder() {
-        if (actionBuilder_ == null) {
-          actionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              acl.Acl.AclAction, acl.Acl.AclAction.Builder, acl.Acl.AclActionOrBuilder>(
-                  getAction(),
-                  getParentForChildren(),
-                  isClean());
-          action_ = null;
-        }
-        return actionBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:acl.AclEntry)
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder setEntries(int index, acl.Acl.AclEntry value) {
+                if (entriesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEntriesIsMutable();
+                    entries_.set(index, value);
+                    onChanged();
+                } else {
+                    entriesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:acl.AclEntry)
-    private static final acl.Acl.AclEntry DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new acl.Acl.AclEntry();
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder setEntries(int index, acl.Acl.AclEntry.Builder builderForValue) {
+                if (entriesBuilder_ == null) {
+                    ensureEntriesIsMutable();
+                    entries_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    entriesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    public static acl.Acl.AclEntry getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder addEntries(acl.Acl.AclEntry value) {
+                if (entriesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEntriesIsMutable();
+                    entries_.add(value);
+                    onChanged();
+                } else {
+                    entriesBuilder_.addMessage(value);
+                }
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<AclEntry>
-        PARSER = new com.google.protobuf.AbstractParser<AclEntry>() {
-      @java.lang.Override
-      public AclEntry parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AclEntry(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AclEntry> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder addEntries(int index, acl.Acl.AclEntry value) {
+                if (entriesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEntriesIsMutable();
+                    entries_.add(index, value);
+                    onChanged();
+                } else {
+                    entriesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AclEntry> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder addEntries(acl.Acl.AclEntry.Builder builderForValue) {
+                if (entriesBuilder_ == null) {
+                    ensureEntriesIsMutable();
+                    entries_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    entriesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public acl.Acl.AclEntry getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder addEntries(int index, acl.Acl.AclEntry.Builder builderForValue) {
+                if (entriesBuilder_ == null) {
+                    ensureEntriesIsMutable();
+                    entries_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    entriesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-  }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder addAllEntries(java.lang.Iterable<? extends acl.Acl.AclEntry> values) {
+                if (entriesBuilder_ == null) {
+                    ensureEntriesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, entries_);
+                    onChanged();
+                } else {
+                    entriesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
 
-  public interface AclRuleSetOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:acl.AclRuleSet)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder clearEntries() {
+                if (entriesBuilder_ == null) {
+                    entries_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    onChanged();
+                } else {
+                    entriesBuilder_.clear();
+                }
+                return this;
+            }
 
-    /**
-     * <code>string name = 1;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 1;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public Builder removeEntries(int index) {
+                if (entriesBuilder_ == null) {
+                    ensureEntriesIsMutable();
+                    entries_.remove(index);
+                    onChanged();
+                } else {
+                    entriesBuilder_.remove(index);
+                }
+                return this;
+            }
 
-    /**
-     * <code>.acl.AclRuleTypeEnum type = 2;</code>
-     * @return The enum numeric value on the wire for type.
-     */
-    int getTypeValue();
-    /**
-     * <code>.acl.AclRuleTypeEnum type = 2;</code>
-     * @return The type.
-     */
-    acl.Acl.AclRuleTypeEnum getType();
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public acl.Acl.AclEntry.Builder getEntriesBuilder(int index) {
+                return getEntriesFieldBuilder().getBuilder(index);
+            }
 
-    /**
-     * <code>string description = 3;</code>
-     * @return The description.
-     */
-    java.lang.String getDescription();
-    /**
-     * <code>string description = 3;</code>
-     * @return The bytes for description.
-     */
-    com.google.protobuf.ByteString
-        getDescriptionBytes();
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(int index) {
+                if (entriesBuilder_ == null) {
+                    return entries_.get(index);
+                } else {
+                    return entriesBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-    /**
-     * <code>string user_id = 4;</code>
-     * @return The userId.
-     */
-    java.lang.String getUserId();
-    /**
-     * <code>string user_id = 4;</code>
-     * @return The bytes for userId.
-     */
-    com.google.protobuf.ByteString
-        getUserIdBytes();
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public java.util.List<? extends acl.Acl.AclEntryOrBuilder> getEntriesOrBuilderList() {
+                if (entriesBuilder_ != null) {
+                    return entriesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(entries_);
+                }
+            }
 
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    java.util.List<acl.Acl.AclEntry> 
-        getEntriesList();
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    acl.Acl.AclEntry getEntries(int index);
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    int getEntriesCount();
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    java.util.List<? extends acl.Acl.AclEntryOrBuilder> 
-        getEntriesOrBuilderList();
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code acl.AclRuleSet}
-   */
-  public static final class AclRuleSet extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:acl.AclRuleSet)
-      AclRuleSetOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AclRuleSet.newBuilder() to construct.
-    private AclRuleSet(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AclRuleSet() {
-      name_ = "";
-      type_ = 0;
-      description_ = "";
-      userId_ = "";
-      entries_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public acl.Acl.AclEntry.Builder addEntriesBuilder() {
+                return getEntriesFieldBuilder().addBuilder(acl.Acl.AclEntry.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AclRuleSet();
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public acl.Acl.AclEntry.Builder addEntriesBuilder(int index) {
+                return getEntriesFieldBuilder().addBuilder(index, acl.Acl.AclEntry.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AclRuleSet(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-
-              type_ = rawValue;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              description_ = s;
-              break;
-            }
-            case 34: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              userId_ = s;
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                entries_ = new java.util.ArrayList<acl.Acl.AclEntry>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              entries_.add(
-                  input.readMessage(acl.Acl.AclEntry.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          entries_ = java.util.Collections.unmodifiableList(entries_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
-    }
+            /**
+             * <code>repeated .acl.AclEntry entries = 5;</code>
+             */
+            public java.util.List<acl.Acl.AclEntry.Builder> getEntriesBuilderList() {
+                return getEntriesFieldBuilder().getBuilderList();
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> getEntriesFieldBuilder() {
+                if (entriesBuilder_ == null) {
+                    entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(entries_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    entries_ = null;
+                }
+                return entriesBuilder_;
+            }
 
-    public static final int NAME_FIELD_NUMBER = 1;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 1;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @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;
-      }
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    public static final int TYPE_FIELD_NUMBER = 2;
-    private int type_;
-    /**
-     * <code>.acl.AclRuleTypeEnum type = 2;</code>
-     * @return The enum numeric value on the wire for type.
-     */
-    @java.lang.Override public int getTypeValue() {
-      return type_;
-    }
-    /**
-     * <code>.acl.AclRuleTypeEnum type = 2;</code>
-     * @return The type.
-     */
-    @java.lang.Override public acl.Acl.AclRuleTypeEnum getType() {
-      @SuppressWarnings("deprecation")
-      acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
-      return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:acl.AclRuleSet)
+        }
 
-    public static final int DESCRIPTION_FIELD_NUMBER = 3;
-    private volatile java.lang.Object description_;
-    /**
-     * <code>string description = 3;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string description = 3;</code>
-     * @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;
-      }
-    }
+        // @@protoc_insertion_point(class_scope:acl.AclRuleSet)
+        private static final acl.Acl.AclRuleSet DEFAULT_INSTANCE;
 
-    public static final int USER_ID_FIELD_NUMBER = 4;
-    private volatile java.lang.Object userId_;
-    /**
-     * <code>string user_id = 4;</code>
-     * @return The userId.
-     */
-    @java.lang.Override
-    public java.lang.String getUserId() {
-      java.lang.Object ref = userId_;
-      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();
-        userId_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string user_id = 4;</code>
-     * @return The bytes for userId.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getUserIdBytes() {
-      java.lang.Object ref = userId_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        userId_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        static {
+            DEFAULT_INSTANCE = new acl.Acl.AclRuleSet();
+        }
 
-    public static final int ENTRIES_FIELD_NUMBER = 5;
-    private java.util.List<acl.Acl.AclEntry> entries_;
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<acl.Acl.AclEntry> getEntriesList() {
-      return entries_;
-    }
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends acl.Acl.AclEntryOrBuilder> 
-        getEntriesOrBuilderList() {
-      return entries_;
-    }
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    @java.lang.Override
-    public int getEntriesCount() {
-      return entries_.size();
-    }
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    @java.lang.Override
-    public acl.Acl.AclEntry getEntries(int index) {
-      return entries_.get(index);
-    }
-    /**
-     * <code>repeated .acl.AclEntry entries = 5;</code>
-     */
-    @java.lang.Override
-    public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(
-        int index) {
-      return entries_.get(index);
-    }
+        public static acl.Acl.AclRuleSet getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final com.google.protobuf.Parser<AclRuleSet> PARSER = new com.google.protobuf.AbstractParser<AclRuleSet>() {
+
+            @java.lang.Override
+            public AclRuleSet 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();
+            }
+        };
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static com.google.protobuf.Parser<AclRuleSet> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
-      }
-      if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
-        output.writeEnum(2, type_);
-      }
-      if (!getDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
-      }
-      if (!getUserIdBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userId_);
-      }
-      for (int i = 0; i < entries_.size(); i++) {
-        output.writeMessage(5, entries_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<AclRuleSet> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
-      }
-      if (type_ != acl.Acl.AclRuleTypeEnum.ACLRULETYPE_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, type_);
-      }
-      if (!getDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
-      }
-      if (!getUserIdBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userId_);
-      }
-      for (int i = 0; i < entries_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, entries_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
+        @java.lang.Override
+        public acl.Acl.AclRuleSet getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof acl.Acl.AclRuleSet)) {
-        return super.equals(obj);
-      }
-      acl.Acl.AclRuleSet other = (acl.Acl.AclRuleSet) obj;
-
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (type_ != other.type_) return false;
-      if (!getDescription()
-          .equals(other.getDescription())) return false;
-      if (!getUserId()
-          .equals(other.getUserId())) return false;
-      if (!getEntriesList()
-          .equals(other.getEntriesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclMatch_descriptor;
 
-    @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) + TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + type_;
-      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getDescription().hashCode();
-      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
-      hash = (53 * hash) + getUserId().hashCode();
-      if (getEntriesCount() > 0) {
-        hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
-        hash = (53 * hash) + getEntriesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclMatch_fieldAccessorTable;
 
-    public static acl.Acl.AclRuleSet parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclRuleSet parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclRuleSet parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static acl.Acl.AclRuleSet parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclAction_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(acl.Acl.AclRuleSet prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclAction_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code acl.AclRuleSet}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:acl.AclRuleSet)
-        acl.Acl.AclRuleSetOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return acl.Acl.internal_static_acl_AclRuleSet_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                acl.Acl.AclRuleSet.class, acl.Acl.AclRuleSet.Builder.class);
-      }
-
-      // Construct using acl.Acl.AclRuleSet.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getEntriesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        name_ = "";
-
-        type_ = 0;
-
-        description_ = "";
-
-        userId_ = "";
-
-        if (entriesBuilder_ == null) {
-          entries_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          entriesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return acl.Acl.internal_static_acl_AclRuleSet_descriptor;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclRuleSet getDefaultInstanceForType() {
-        return acl.Acl.AclRuleSet.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclRuleSet build() {
-        acl.Acl.AclRuleSet result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public acl.Acl.AclRuleSet buildPartial() {
-        acl.Acl.AclRuleSet result = new acl.Acl.AclRuleSet(this);
-        int from_bitField0_ = bitField0_;
-        result.name_ = name_;
-        result.type_ = type_;
-        result.description_ = description_;
-        result.userId_ = userId_;
-        if (entriesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            entries_ = java.util.Collections.unmodifiableList(entries_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.entries_ = entries_;
-        } else {
-          result.entries_ = entriesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof acl.Acl.AclRuleSet) {
-          return mergeFrom((acl.Acl.AclRuleSet)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(acl.Acl.AclRuleSet other) {
-        if (other == acl.Acl.AclRuleSet.getDefaultInstance()) return this;
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.type_ != 0) {
-          setTypeValue(other.getTypeValue());
-        }
-        if (!other.getDescription().isEmpty()) {
-          description_ = other.description_;
-          onChanged();
-        }
-        if (!other.getUserId().isEmpty()) {
-          userId_ = other.userId_;
-          onChanged();
-        }
-        if (entriesBuilder_ == null) {
-          if (!other.entries_.isEmpty()) {
-            if (entries_.isEmpty()) {
-              entries_ = other.entries_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureEntriesIsMutable();
-              entries_.addAll(other.entries_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.entries_.isEmpty()) {
-            if (entriesBuilder_.isEmpty()) {
-              entriesBuilder_.dispose();
-              entriesBuilder_ = null;
-              entries_ = other.entries_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              entriesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getEntriesFieldBuilder() : null;
-            } else {
-              entriesBuilder_.addAllMessages(other.entries_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        acl.Acl.AclRuleSet parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (acl.Acl.AclRuleSet) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 1;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 1;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 1;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 1;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int type_ = 0;
-      /**
-       * <code>.acl.AclRuleTypeEnum type = 2;</code>
-       * @return The enum numeric value on the wire for type.
-       */
-      @java.lang.Override public int getTypeValue() {
-        return type_;
-      }
-      /**
-       * <code>.acl.AclRuleTypeEnum type = 2;</code>
-       * @param value The enum numeric value on the wire for type to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTypeValue(int value) {
-        
-        type_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleTypeEnum type = 2;</code>
-       * @return The type.
-       */
-      @java.lang.Override
-      public acl.Acl.AclRuleTypeEnum getType() {
-        @SuppressWarnings("deprecation")
-        acl.Acl.AclRuleTypeEnum result = acl.Acl.AclRuleTypeEnum.valueOf(type_);
-        return result == null ? acl.Acl.AclRuleTypeEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.acl.AclRuleTypeEnum type = 2;</code>
-       * @param value The type to set.
-       * @return This builder for chaining.
-       */
-      public Builder setType(acl.Acl.AclRuleTypeEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        type_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleTypeEnum type = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearType() {
-        
-        type_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object description_ = "";
-      /**
-       * <code>string description = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string description = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string description = 3;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string description = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDescription() {
-        
-        description_ = getDefaultInstance().getDescription();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string description = 3;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object userId_ = "";
-      /**
-       * <code>string user_id = 4;</code>
-       * @return The userId.
-       */
-      public java.lang.String getUserId() {
-        java.lang.Object ref = userId_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          userId_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string user_id = 4;</code>
-       * @return The bytes for userId.
-       */
-      public com.google.protobuf.ByteString
-          getUserIdBytes() {
-        java.lang.Object ref = userId_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          userId_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string user_id = 4;</code>
-       * @param value The userId to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUserId(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        userId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string user_id = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearUserId() {
-        
-        userId_ = getDefaultInstance().getUserId();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string user_id = 4;</code>
-       * @param value The bytes for userId to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUserIdBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        userId_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<acl.Acl.AclEntry> entries_ =
-        java.util.Collections.emptyList();
-      private void ensureEntriesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          entries_ = new java.util.ArrayList<acl.Acl.AclEntry>(entries_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> entriesBuilder_;
-
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public java.util.List<acl.Acl.AclEntry> getEntriesList() {
-        if (entriesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(entries_);
-        } else {
-          return entriesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public int getEntriesCount() {
-        if (entriesBuilder_ == null) {
-          return entries_.size();
-        } else {
-          return entriesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public acl.Acl.AclEntry getEntries(int index) {
-        if (entriesBuilder_ == null) {
-          return entries_.get(index);
-        } else {
-          return entriesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder setEntries(
-          int index, acl.Acl.AclEntry value) {
-        if (entriesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEntriesIsMutable();
-          entries_.set(index, value);
-          onChanged();
-        } else {
-          entriesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder setEntries(
-          int index, acl.Acl.AclEntry.Builder builderForValue) {
-        if (entriesBuilder_ == null) {
-          ensureEntriesIsMutable();
-          entries_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          entriesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder addEntries(acl.Acl.AclEntry value) {
-        if (entriesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEntriesIsMutable();
-          entries_.add(value);
-          onChanged();
-        } else {
-          entriesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder addEntries(
-          int index, acl.Acl.AclEntry value) {
-        if (entriesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEntriesIsMutable();
-          entries_.add(index, value);
-          onChanged();
-        } else {
-          entriesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder addEntries(
-          acl.Acl.AclEntry.Builder builderForValue) {
-        if (entriesBuilder_ == null) {
-          ensureEntriesIsMutable();
-          entries_.add(builderForValue.build());
-          onChanged();
-        } else {
-          entriesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder addEntries(
-          int index, acl.Acl.AclEntry.Builder builderForValue) {
-        if (entriesBuilder_ == null) {
-          ensureEntriesIsMutable();
-          entries_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          entriesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder addAllEntries(
-          java.lang.Iterable<? extends acl.Acl.AclEntry> values) {
-        if (entriesBuilder_ == null) {
-          ensureEntriesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, entries_);
-          onChanged();
-        } else {
-          entriesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder clearEntries() {
-        if (entriesBuilder_ == null) {
-          entries_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          entriesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public Builder removeEntries(int index) {
-        if (entriesBuilder_ == null) {
-          ensureEntriesIsMutable();
-          entries_.remove(index);
-          onChanged();
-        } else {
-          entriesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public acl.Acl.AclEntry.Builder getEntriesBuilder(
-          int index) {
-        return getEntriesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public acl.Acl.AclEntryOrBuilder getEntriesOrBuilder(
-          int index) {
-        if (entriesBuilder_ == null) {
-          return entries_.get(index);  } else {
-          return entriesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public java.util.List<? extends acl.Acl.AclEntryOrBuilder> 
-           getEntriesOrBuilderList() {
-        if (entriesBuilder_ != null) {
-          return entriesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(entries_);
-        }
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public acl.Acl.AclEntry.Builder addEntriesBuilder() {
-        return getEntriesFieldBuilder().addBuilder(
-            acl.Acl.AclEntry.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public acl.Acl.AclEntry.Builder addEntriesBuilder(
-          int index) {
-        return getEntriesFieldBuilder().addBuilder(
-            index, acl.Acl.AclEntry.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .acl.AclEntry entries = 5;</code>
-       */
-      public java.util.List<acl.Acl.AclEntry.Builder> 
-           getEntriesBuilderList() {
-        return getEntriesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder> 
-          getEntriesFieldBuilder() {
-        if (entriesBuilder_ == null) {
-          entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              acl.Acl.AclEntry, acl.Acl.AclEntry.Builder, acl.Acl.AclEntryOrBuilder>(
-                  entries_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          entries_ = null;
-        }
-        return entriesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:acl.AclRuleSet)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclEntry_descriptor;
 
-    // @@protoc_insertion_point(class_scope:acl.AclRuleSet)
-    private static final acl.Acl.AclRuleSet DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new acl.Acl.AclRuleSet();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclEntry_fieldAccessorTable;
 
-    public static acl.Acl.AclRuleSet getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_acl_AclRuleSet_descriptor;
 
-    private static final com.google.protobuf.Parser<AclRuleSet>
-        PARSER = new com.google.protobuf.AbstractParser<AclRuleSet>() {
-      @java.lang.Override
-      public AclRuleSet parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AclRuleSet(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AclRuleSet> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_acl_AclRuleSet_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AclRuleSet> getParserForType() {
-      return PARSER;
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-    @java.lang.Override
-    public acl.Acl.AclRuleSet getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_acl_AclMatch_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_acl_AclMatch_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_acl_AclAction_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_acl_AclAction_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_acl_AclEntry_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_acl_AclEntry_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_acl_AclRuleSet_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_acl_AclRuleSet_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\tacl.proto\022\003acl\"\252\001\n\010AclMatch\022\014\n\004dscp\030\001 " +
-      "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" +
-      "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" +
-      "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" +
-      "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\"i\n\tAclActi" +
-      "on\0221\n\016forward_action\030\001 \001(\0162\031.acl.AclForw" +
-      "ardActionEnum\022)\n\nlog_action\030\002 \001(\0162\025.acl." +
-      "AclLogActionEnum\"r\n\010AclEntry\022\023\n\013sequence" +
-      "_id\030\001 \001(\r\022\023\n\013description\030\002 \001(\t\022\034\n\005match\030" +
-      "\003 \001(\0132\r.acl.AclMatch\022\036\n\006action\030\004 \001(\0132\016.a" +
-      "cl.AclAction\"\204\001\n\nAclRuleSet\022\014\n\004name\030\001 \001(" +
-      "\t\022\"\n\004type\030\002 \001(\0162\024.acl.AclRuleTypeEnum\022\023\n" +
-      "\013description\030\003 \001(\t\022\017\n\007user_id\030\004 \001(\t\022\036\n\007e" +
-      "ntries\030\005 \003(\0132\r.acl.AclEntry*\231\001\n\017AclRuleT" +
-      "ypeEnum\022\031\n\025ACLRULETYPE_UNDEFINED\020\000\022\024\n\020AC" +
-      "LRULETYPE_IPV4\020\001\022\024\n\020ACLRULETYPE_IPV6\020\002\022\022" +
-      "\n\016ACLRULETYPE_L2\020\003\022\024\n\020ACLRULETYPE_MPLS\020\004" +
-      "\022\025\n\021ACLRULETYPE_MIXED\020\005*\227\001\n\024AclForwardAc" +
-      "tionEnum\022!\n\035ACLFORWARDINGACTION_UNDEFINE" +
-      "D\020\000\022\034\n\030ACLFORWARDINGACTION_DROP\020\001\022\036\n\032ACL" +
-      "FORWARDINGACTION_ACCEPT\020\002\022\036\n\032ACLFORWARDI" +
-      "NGACTION_REJECT\020\003*_\n\020AclLogActionEnum\022\032\n" +
-      "\026ACLLOGACTION_UNDEFINED\020\000\022\026\n\022ACLLOGACTIO" +
-      "N_NOLOG\020\001\022\027\n\023ACLLOGACTION_SYSLOG\020\002b\006prot" +
-      "o3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-        });
-    internal_static_acl_AclMatch_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_acl_AclMatch_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_acl_AclMatch_descriptor,
-        new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel", });
-    internal_static_acl_AclAction_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_acl_AclAction_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_acl_AclAction_descriptor,
-        new java.lang.String[] { "ForwardAction", "LogAction", });
-    internal_static_acl_AclEntry_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_acl_AclEntry_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_acl_AclEntry_descriptor,
-        new java.lang.String[] { "SequenceId", "Description", "Match", "Action", });
-    internal_static_acl_AclRuleSet_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_acl_AclRuleSet_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_acl_AclRuleSet_descriptor,
-        new java.lang.String[] { "Name", "Type", "Description", "UserId", "Entries", });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    static {
+        java.lang.String[] descriptorData = { "\n\tacl.proto\022\003acl\"\252\001\n\010AclMatch\022\014\n\004dscp\030\001 " + "\001(\r\022\020\n\010protocol\030\002 \001(\r\022\023\n\013src_address\030\003 \001" + "(\t\022\023\n\013dst_address\030\004 \001(\t\022\020\n\010src_port\030\005 \001(" + "\r\022\020\n\010dst_port\030\006 \001(\r\022\030\n\020start_mpls_label\030" + "\007 \001(\r\022\026\n\016end_mpls_label\030\010 \001(\r\"i\n\tAclActi" + "on\0221\n\016forward_action\030\001 \001(\0162\031.acl.AclForw" + "ardActionEnum\022)\n\nlog_action\030\002 \001(\0162\025.acl." + "AclLogActionEnum\"r\n\010AclEntry\022\023\n\013sequence" + "_id\030\001 \001(\r\022\023\n\013description\030\002 \001(\t\022\034\n\005match\030" + "\003 \001(\0132\r.acl.AclMatch\022\036\n\006action\030\004 \001(\0132\016.a" + "cl.AclAction\"\204\001\n\nAclRuleSet\022\014\n\004name\030\001 \001(" + "\t\022\"\n\004type\030\002 \001(\0162\024.acl.AclRuleTypeEnum\022\023\n" + "\013description\030\003 \001(\t\022\017\n\007user_id\030\004 \001(\t\022\036\n\007e" + "ntries\030\005 \003(\0132\r.acl.AclEntry*\231\001\n\017AclRuleT" + "ypeEnum\022\031\n\025ACLRULETYPE_UNDEFINED\020\000\022\024\n\020AC" + "LRULETYPE_IPV4\020\001\022\024\n\020ACLRULETYPE_IPV6\020\002\022\022" + "\n\016ACLRULETYPE_L2\020\003\022\024\n\020ACLRULETYPE_MPLS\020\004" + "\022\025\n\021ACLRULETYPE_MIXED\020\005*\227\001\n\024AclForwardAc" + "tionEnum\022!\n\035ACLFORWARDINGACTION_UNDEFINE" + "D\020\000\022\034\n\030ACLFORWARDINGACTION_DROP\020\001\022\036\n\032ACL" + "FORWARDINGACTION_ACCEPT\020\002\022\036\n\032ACLFORWARDI" + "NGACTION_REJECT\020\003*_\n\020AclLogActionEnum\022\032\n" + "\026ACLLOGACTION_UNDEFINED\020\000\022\026\n\022ACLLOGACTIO" + "N_NOLOG\020\001\022\027\n\023ACLLOGACTION_SYSLOG\020\002b\006prot" + "o3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {});
+        internal_static_acl_AclMatch_descriptor = getDescriptor().getMessageTypes().get(0);
+        internal_static_acl_AclMatch_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclMatch_descriptor, new java.lang.String[] { "Dscp", "Protocol", "SrcAddress", "DstAddress", "SrcPort", "DstPort", "StartMplsLabel", "EndMplsLabel" });
+        internal_static_acl_AclAction_descriptor = getDescriptor().getMessageTypes().get(1);
+        internal_static_acl_AclAction_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclAction_descriptor, new java.lang.String[] { "ForwardAction", "LogAction" });
+        internal_static_acl_AclEntry_descriptor = getDescriptor().getMessageTypes().get(2);
+        internal_static_acl_AclEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclEntry_descriptor, new java.lang.String[] { "SequenceId", "Description", "Match", "Action" });
+        internal_static_acl_AclRuleSet_descriptor = getDescriptor().getMessageTypes().get(3);
+        internal_static_acl_AclRuleSet_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_acl_AclRuleSet_descriptor, new java.lang.String[] { "Name", "Type", "Description", "UserId", "Entries" });
+    }
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
index d4873899b0113a7356c1c4d6bc2ea9aae2e8b4e5..22679d79248b2374c8f96e7f5286ac81e37c8517 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -1,1533 +1,1320 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: context.proto
-
 package context;
 
 public final class ContextOuterClass {
-  private ContextOuterClass() {}
-  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 context.EventTypeEnum}
-   */
-  public enum EventTypeEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>EVENTTYPE_UNDEFINED = 0;</code>
-     */
-    EVENTTYPE_UNDEFINED(0),
-    /**
-     * <code>EVENTTYPE_CREATE = 1;</code>
-     */
-    EVENTTYPE_CREATE(1),
-    /**
-     * <code>EVENTTYPE_UPDATE = 2;</code>
-     */
-    EVENTTYPE_UPDATE(2),
-    /**
-     * <code>EVENTTYPE_REMOVE = 3;</code>
-     */
-    EVENTTYPE_REMOVE(3),
-    UNRECOGNIZED(-1),
-    ;
-
-    /**
-     * <code>EVENTTYPE_UNDEFINED = 0;</code>
-     */
-    public static final int EVENTTYPE_UNDEFINED_VALUE = 0;
-    /**
-     * <code>EVENTTYPE_CREATE = 1;</code>
-     */
-    public static final int EVENTTYPE_CREATE_VALUE = 1;
-    /**
-     * <code>EVENTTYPE_UPDATE = 2;</code>
-     */
-    public static final int EVENTTYPE_UPDATE_VALUE = 2;
-    /**
-     * <code>EVENTTYPE_REMOVE = 3;</code>
-     */
-    public static final int EVENTTYPE_REMOVE_VALUE = 3;
 
+    private ContextOuterClass() {
+    }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
     }
 
-    /**
-     * @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 EventTypeEnum valueOf(int value) {
-      return forNumber(value);
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code context.EventTypeEnum}
      */
-    public static EventTypeEnum forNumber(int value) {
-      switch (value) {
-        case 0: return EVENTTYPE_UNDEFINED;
-        case 1: return EVENTTYPE_CREATE;
-        case 2: return EVENTTYPE_UPDATE;
-        case 3: return EVENTTYPE_REMOVE;
-        default: return null;
-      }
-    }
+    public enum EventTypeEnum implements com.google.protobuf.ProtocolMessageEnum {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        EventTypeEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum>() {
-            public EventTypeEnum findValueByNumber(int number) {
-              return EventTypeEnum.forNumber(number);
-            }
-          };
+        /**
+         * <code>EVENTTYPE_UNDEFINED = 0;</code>
+         */
+        EVENTTYPE_UNDEFINED(0),
+        /**
+         * <code>EVENTTYPE_CREATE = 1;</code>
+         */
+        EVENTTYPE_CREATE(1),
+        /**
+         * <code>EVENTTYPE_UPDATE = 2;</code>
+         */
+        EVENTTYPE_UPDATE(2),
+        /**
+         * <code>EVENTTYPE_REMOVE = 3;</code>
+         */
+        EVENTTYPE_REMOVE(3),
+        UNRECOGNIZED(-1);
 
-    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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(0);
-    }
+        /**
+         * <code>EVENTTYPE_UNDEFINED = 0;</code>
+         */
+        public static final int EVENTTYPE_UNDEFINED_VALUE = 0;
 
-    private static final EventTypeEnum[] VALUES = values();
-
-    public static EventTypeEnum 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()];
-    }
+        /**
+         * <code>EVENTTYPE_CREATE = 1;</code>
+         */
+        public static final int EVENTTYPE_CREATE_VALUE = 1;
 
-    private final int value;
+        /**
+         * <code>EVENTTYPE_UPDATE = 2;</code>
+         */
+        public static final int EVENTTYPE_UPDATE_VALUE = 2;
 
-    private EventTypeEnum(int value) {
-      this.value = value;
-    }
+        /**
+         * <code>EVENTTYPE_REMOVE = 3;</code>
+         */
+        public static final int EVENTTYPE_REMOVE_VALUE = 3;
 
-    // @@protoc_insertion_point(enum_scope:context.EventTypeEnum)
-  }
+        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 EventTypeEnum 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 EventTypeEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return EVENTTYPE_UNDEFINED;
+                case 1:
+                    return EVENTTYPE_CREATE;
+                case 2:
+                    return EVENTTYPE_UPDATE;
+                case 3:
+                    return EVENTTYPE_REMOVE;
+                default:
+                    return null;
+            }
+        }
 
-  /**
-   * Protobuf enum {@code context.DeviceDriverEnum}
-   */
-  public enum DeviceDriverEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <pre>
-     * also used for emulated
-     * </pre>
-     *
-     * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
-     */
-    DEVICEDRIVER_UNDEFINED(0),
-    /**
-     * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
-     */
-    DEVICEDRIVER_OPENCONFIG(1),
-    /**
-     * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
-     */
-    DEVICEDRIVER_TRANSPORT_API(2),
-    /**
-     * <code>DEVICEDRIVER_P4 = 3;</code>
-     */
-    DEVICEDRIVER_P4(3),
-    /**
-     * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
-     */
-    DEVICEDRIVER_IETF_NETWORK_TOPOLOGY(4),
-    /**
-     * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
-     */
-    DEVICEDRIVER_ONF_TR_532(5),
-    /**
-     * <code>DEVICEDRIVER_XR = 6;</code>
-     */
-    DEVICEDRIVER_XR(6),
-    /**
-     * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
-     */
-    DEVICEDRIVER_IETF_L2VPN(7),
-    /**
-     * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
-     */
-    DEVICEDRIVER_GNMI_OPENCONFIG(8),
-    /**
-     * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
-     */
-    DEVICEDRIVER_FLEXSCALE(9),
-    /**
-     * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
-     */
-    DEVICEDRIVER_IETF_ACTN(10),
-    UNRECOGNIZED(-1),
-    ;
+        public static com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    /**
-     * <pre>
-     * also used for emulated
-     * </pre>
-     *
-     * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
-     */
-    public static final int DEVICEDRIVER_UNDEFINED_VALUE = 0;
-    /**
-     * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
-     */
-    public static final int DEVICEDRIVER_OPENCONFIG_VALUE = 1;
-    /**
-     * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
-     */
-    public static final int DEVICEDRIVER_TRANSPORT_API_VALUE = 2;
-    /**
-     * <code>DEVICEDRIVER_P4 = 3;</code>
-     */
-    public static final int DEVICEDRIVER_P4_VALUE = 3;
-    /**
-     * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
-     */
-    public static final int DEVICEDRIVER_IETF_NETWORK_TOPOLOGY_VALUE = 4;
-    /**
-     * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
-     */
-    public static final int DEVICEDRIVER_ONF_TR_532_VALUE = 5;
-    /**
-     * <code>DEVICEDRIVER_XR = 6;</code>
-     */
-    public static final int DEVICEDRIVER_XR_VALUE = 6;
-    /**
-     * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
-     */
-    public static final int DEVICEDRIVER_IETF_L2VPN_VALUE = 7;
-    /**
-     * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
-     */
-    public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;
-    /**
-     * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
-     */
-    public static final int DEVICEDRIVER_FLEXSCALE_VALUE = 9;
-    /**
-     * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
-     */
-    public static final int DEVICEDRIVER_IETF_ACTN_VALUE = 10;
+        private static final com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum>() {
 
+            public EventTypeEnum findValueByNumber(int number) {
+                return EventTypeEnum.forNumber(number);
+            }
+        };
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        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());
+        }
 
-    /**
-     * @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 DeviceDriverEnum valueOf(int value) {
-      return forNumber(value);
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static DeviceDriverEnum forNumber(int value) {
-      switch (value) {
-        case 0: return DEVICEDRIVER_UNDEFINED;
-        case 1: return DEVICEDRIVER_OPENCONFIG;
-        case 2: return DEVICEDRIVER_TRANSPORT_API;
-        case 3: return DEVICEDRIVER_P4;
-        case 4: return DEVICEDRIVER_IETF_NETWORK_TOPOLOGY;
-        case 5: return DEVICEDRIVER_ONF_TR_532;
-        case 6: return DEVICEDRIVER_XR;
-        case 7: return DEVICEDRIVER_IETF_L2VPN;
-        case 8: return DEVICEDRIVER_GNMI_OPENCONFIG;
-        case 9: return DEVICEDRIVER_FLEXSCALE;
-        case 10: return DEVICEDRIVER_IETF_ACTN;
-        default: return null;
-      }
-    }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(0);
+        }
 
-    public static com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        DeviceDriverEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum>() {
-            public DeviceDriverEnum findValueByNumber(int number) {
-              return DeviceDriverEnum.forNumber(number);
+        private static final EventTypeEnum[] VALUES = values();
+
+        public static EventTypeEnum 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 EventTypeEnum(int value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * Protobuf enum {@code context.DeviceDriverEnum}
+     */
+    public enum DeviceDriverEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <pre>
+         * also used for emulated
+         * </pre>
+         *
+         * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
+         */
+        DEVICEDRIVER_UNDEFINED(0),
+        /**
+         * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
+         */
+        DEVICEDRIVER_OPENCONFIG(1),
+        /**
+         * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
+         */
+        DEVICEDRIVER_TRANSPORT_API(2),
+        /**
+         * <code>DEVICEDRIVER_P4 = 3;</code>
+         */
+        DEVICEDRIVER_P4(3),
+        /**
+         * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
+         */
+        DEVICEDRIVER_IETF_NETWORK_TOPOLOGY(4),
+        /**
+         * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
+         */
+        DEVICEDRIVER_ONF_TR_532(5),
+        /**
+         * <code>DEVICEDRIVER_XR = 6;</code>
+         */
+        DEVICEDRIVER_XR(6),
+        /**
+         * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
+         */
+        DEVICEDRIVER_IETF_L2VPN(7),
+        /**
+         * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
+         */
+        DEVICEDRIVER_GNMI_OPENCONFIG(8),
+        /**
+         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         */
+        DEVICEDRIVER_FLEXSCALE(9),
+        /**
+         * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
+         */
+        DEVICEDRIVER_IETF_ACTN(10),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <pre>
+         * also used for emulated
+         * </pre>
+         *
+         * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
+         */
+        public static final int DEVICEDRIVER_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
+         */
+        public static final int DEVICEDRIVER_OPENCONFIG_VALUE = 1;
+
+        /**
+         * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
+         */
+        public static final int DEVICEDRIVER_TRANSPORT_API_VALUE = 2;
+
+        /**
+         * <code>DEVICEDRIVER_P4 = 3;</code>
+         */
+        public static final int DEVICEDRIVER_P4_VALUE = 3;
+
+        /**
+         * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
+         */
+        public static final int DEVICEDRIVER_IETF_NETWORK_TOPOLOGY_VALUE = 4;
+
+        /**
+         * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
+         */
+        public static final int DEVICEDRIVER_ONF_TR_532_VALUE = 5;
+
+        /**
+         * <code>DEVICEDRIVER_XR = 6;</code>
+         */
+        public static final int DEVICEDRIVER_XR_VALUE = 6;
+
+        /**
+         * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
+         */
+        public static final int DEVICEDRIVER_IETF_L2VPN_VALUE = 7;
+
+        /**
+         * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
+         */
+        public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;
+
+        /**
+         * <code>DEVICEDRIVER_FLEXSCALE = 9;</code>
+         */
+        public static final int DEVICEDRIVER_FLEXSCALE_VALUE = 9;
+
+        /**
+         * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
+         */
+        public static final int DEVICEDRIVER_IETF_ACTN_VALUE = 10;
+
+        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 DeviceDriverEnum 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 DeviceDriverEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return DEVICEDRIVER_UNDEFINED;
+                case 1:
+                    return DEVICEDRIVER_OPENCONFIG;
+                case 2:
+                    return DEVICEDRIVER_TRANSPORT_API;
+                case 3:
+                    return DEVICEDRIVER_P4;
+                case 4:
+                    return DEVICEDRIVER_IETF_NETWORK_TOPOLOGY;
+                case 5:
+                    return DEVICEDRIVER_ONF_TR_532;
+                case 6:
+                    return DEVICEDRIVER_XR;
+                case 7:
+                    return DEVICEDRIVER_IETF_L2VPN;
+                case 8:
+                    return DEVICEDRIVER_GNMI_OPENCONFIG;
+                case 9:
+                    return DEVICEDRIVER_FLEXSCALE;
+                case 10:
+                    return DEVICEDRIVER_IETF_ACTN;
+                default:
+                    return null;
+            }
+        }
 
-    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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(1);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private static final DeviceDriverEnum[] VALUES = values();
-
-    public static DeviceDriverEnum 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 static final com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum>() {
 
-    private final int value;
+            public DeviceDriverEnum findValueByNumber(int number) {
+                return DeviceDriverEnum.forNumber(number);
+            }
+        };
 
-    private DeviceDriverEnum(int value) {
-      this.value = value;
-    }
+        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());
+        }
 
-    // @@protoc_insertion_point(enum_scope:context.DeviceDriverEnum)
-  }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-  /**
-   * Protobuf enum {@code context.DeviceOperationalStatusEnum}
-   */
-  public enum DeviceOperationalStatusEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
-     */
-    DEVICEOPERATIONALSTATUS_UNDEFINED(0),
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
-     */
-    DEVICEOPERATIONALSTATUS_DISABLED(1),
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
-     */
-    DEVICEOPERATIONALSTATUS_ENABLED(2),
-    UNRECOGNIZED(-1),
-    ;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(1);
+        }
 
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
-     */
-    public static final int DEVICEOPERATIONALSTATUS_UNDEFINED_VALUE = 0;
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
-     */
-    public static final int DEVICEOPERATIONALSTATUS_DISABLED_VALUE = 1;
-    /**
-     * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
-     */
-    public static final int DEVICEOPERATIONALSTATUS_ENABLED_VALUE = 2;
+        private static final DeviceDriverEnum[] VALUES = values();
 
+        public static DeviceDriverEnum 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()];
+        }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        private final int 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 DeviceOperationalStatusEnum valueOf(int value) {
-      return forNumber(value);
+        private DeviceDriverEnum(int value) {
+            this.value = value;
+        }
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code context.DeviceOperationalStatusEnum}
      */
-    public static DeviceOperationalStatusEnum forNumber(int value) {
-      switch (value) {
-        case 0: return DEVICEOPERATIONALSTATUS_UNDEFINED;
-        case 1: return DEVICEOPERATIONALSTATUS_DISABLED;
-        case 2: return DEVICEOPERATIONALSTATUS_ENABLED;
-        default: return null;
-      }
-    }
+    public enum DeviceOperationalStatusEnum implements com.google.protobuf.ProtocolMessageEnum {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        DeviceOperationalStatusEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum>() {
-            public DeviceOperationalStatusEnum findValueByNumber(int number) {
-              return DeviceOperationalStatusEnum.forNumber(number);
-            }
-          };
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
+         */
+        DEVICEOPERATIONALSTATUS_UNDEFINED(0),
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
+         */
+        DEVICEOPERATIONALSTATUS_DISABLED(1),
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
+         */
+        DEVICEOPERATIONALSTATUS_ENABLED(2),
+        UNRECOGNIZED(-1);
 
-    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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(2);
-    }
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
+         */
+        public static final int DEVICEOPERATIONALSTATUS_UNDEFINED_VALUE = 0;
 
-    private static final DeviceOperationalStatusEnum[] VALUES = values();
-
-    public static DeviceOperationalStatusEnum 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()];
-    }
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
+         */
+        public static final int DEVICEOPERATIONALSTATUS_DISABLED_VALUE = 1;
 
-    private final int value;
+        /**
+         * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
+         */
+        public static final int DEVICEOPERATIONALSTATUS_ENABLED_VALUE = 2;
 
-    private DeviceOperationalStatusEnum(int value) {
-      this.value = value;
-    }
+        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 DeviceOperationalStatusEnum 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 DeviceOperationalStatusEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return DEVICEOPERATIONALSTATUS_UNDEFINED;
+                case 1:
+                    return DEVICEOPERATIONALSTATUS_DISABLED;
+                case 2:
+                    return DEVICEOPERATIONALSTATUS_ENABLED;
+                default:
+                    return null;
+            }
+        }
 
-    // @@protoc_insertion_point(enum_scope:context.DeviceOperationalStatusEnum)
-  }
+        public static com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-  /**
-   * Protobuf enum {@code context.ServiceTypeEnum}
-   */
-  public enum ServiceTypeEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>SERVICETYPE_UNKNOWN = 0;</code>
-     */
-    SERVICETYPE_UNKNOWN(0),
-    /**
-     * <code>SERVICETYPE_L3NM = 1;</code>
-     */
-    SERVICETYPE_L3NM(1),
-    /**
-     * <code>SERVICETYPE_L2NM = 2;</code>
-     */
-    SERVICETYPE_L2NM(2),
-    /**
-     * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
-     */
-    SERVICETYPE_TAPI_CONNECTIVITY_SERVICE(3),
-    /**
-     * <code>SERVICETYPE_TE = 4;</code>
-     */
-    SERVICETYPE_TE(4),
-    /**
-     * <code>SERVICETYPE_E2E = 5;</code>
-     */
-    SERVICETYPE_E2E(5),
-    UNRECOGNIZED(-1),
-    ;
+        private static final com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum>() {
 
-    /**
-     * <code>SERVICETYPE_UNKNOWN = 0;</code>
-     */
-    public static final int SERVICETYPE_UNKNOWN_VALUE = 0;
-    /**
-     * <code>SERVICETYPE_L3NM = 1;</code>
-     */
-    public static final int SERVICETYPE_L3NM_VALUE = 1;
-    /**
-     * <code>SERVICETYPE_L2NM = 2;</code>
-     */
-    public static final int SERVICETYPE_L2NM_VALUE = 2;
-    /**
-     * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
-     */
-    public static final int SERVICETYPE_TAPI_CONNECTIVITY_SERVICE_VALUE = 3;
-    /**
-     * <code>SERVICETYPE_TE = 4;</code>
-     */
-    public static final int SERVICETYPE_TE_VALUE = 4;
-    /**
-     * <code>SERVICETYPE_E2E = 5;</code>
-     */
-    public static final int SERVICETYPE_E2E_VALUE = 5;
+            public DeviceOperationalStatusEnum findValueByNumber(int number) {
+                return DeviceOperationalStatusEnum.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 int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    /**
-     * @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 ServiceTypeEnum valueOf(int value) {
-      return forNumber(value);
-    }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(2);
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static ServiceTypeEnum forNumber(int value) {
-      switch (value) {
-        case 0: return SERVICETYPE_UNKNOWN;
-        case 1: return SERVICETYPE_L3NM;
-        case 2: return SERVICETYPE_L2NM;
-        case 3: return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
-        case 4: return SERVICETYPE_TE;
-        case 5: return SERVICETYPE_E2E;
-        default: return null;
-      }
-    }
+        private static final DeviceOperationalStatusEnum[] VALUES = values();
 
-    public static com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        ServiceTypeEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum>() {
-            public ServiceTypeEnum findValueByNumber(int number) {
-              return ServiceTypeEnum.forNumber(number);
+        public static DeviceOperationalStatusEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+            if (desc.getType() != getDescriptor()) {
+                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
             }
-          };
-
-    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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(3);
-    }
+            if (desc.getIndex() == -1) {
+                return UNRECOGNIZED;
+            }
+            return VALUES[desc.getIndex()];
+        }
+
+        private final int value;
+
+        private DeviceOperationalStatusEnum(int value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * Protobuf enum {@code context.ServiceTypeEnum}
+     */
+    public enum ServiceTypeEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>SERVICETYPE_UNKNOWN = 0;</code>
+         */
+        SERVICETYPE_UNKNOWN(0),
+        /**
+         * <code>SERVICETYPE_L3NM = 1;</code>
+         */
+        SERVICETYPE_L3NM(1),
+        /**
+         * <code>SERVICETYPE_L2NM = 2;</code>
+         */
+        SERVICETYPE_L2NM(2),
+        /**
+         * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
+         */
+        SERVICETYPE_TAPI_CONNECTIVITY_SERVICE(3),
+        /**
+         * <code>SERVICETYPE_TE = 4;</code>
+         */
+        SERVICETYPE_TE(4),
+        /**
+         * <code>SERVICETYPE_E2E = 5;</code>
+         */
+        SERVICETYPE_E2E(5),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>SERVICETYPE_UNKNOWN = 0;</code>
+         */
+        public static final int SERVICETYPE_UNKNOWN_VALUE = 0;
+
+        /**
+         * <code>SERVICETYPE_L3NM = 1;</code>
+         */
+        public static final int SERVICETYPE_L3NM_VALUE = 1;
+
+        /**
+         * <code>SERVICETYPE_L2NM = 2;</code>
+         */
+        public static final int SERVICETYPE_L2NM_VALUE = 2;
+
+        /**
+         * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
+         */
+        public static final int SERVICETYPE_TAPI_CONNECTIVITY_SERVICE_VALUE = 3;
+
+        /**
+         * <code>SERVICETYPE_TE = 4;</code>
+         */
+        public static final int SERVICETYPE_TE_VALUE = 4;
+
+        /**
+         * <code>SERVICETYPE_E2E = 5;</code>
+         */
+        public static final int SERVICETYPE_E2E_VALUE = 5;
+
+        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 ServiceTypeEnum 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 ServiceTypeEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return SERVICETYPE_UNKNOWN;
+                case 1:
+                    return SERVICETYPE_L3NM;
+                case 2:
+                    return SERVICETYPE_L2NM;
+                case 3:
+                    return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
+                case 4:
+                    return SERVICETYPE_TE;
+                case 5:
+                    return SERVICETYPE_E2E;
+                default:
+                    return null;
+            }
+        }
 
-    private static final ServiceTypeEnum[] VALUES = values();
-
-    public static ServiceTypeEnum 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()];
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private final int value;
+        private static final com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum>() {
 
-    private ServiceTypeEnum(int value) {
-      this.value = value;
-    }
+            public ServiceTypeEnum findValueByNumber(int number) {
+                return ServiceTypeEnum.forNumber(number);
+            }
+        };
 
-    // @@protoc_insertion_point(enum_scope:context.ServiceTypeEnum)
-  }
+        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());
+        }
 
-  /**
-   * Protobuf enum {@code context.ServiceStatusEnum}
-   */
-  public enum ServiceStatusEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>SERVICESTATUS_UNDEFINED = 0;</code>
-     */
-    SERVICESTATUS_UNDEFINED(0),
-    /**
-     * <code>SERVICESTATUS_PLANNED = 1;</code>
-     */
-    SERVICESTATUS_PLANNED(1),
-    /**
-     * <code>SERVICESTATUS_ACTIVE = 2;</code>
-     */
-    SERVICESTATUS_ACTIVE(2),
-    /**
-     * <code>SERVICESTATUS_UPDATING = 3;</code>
-     */
-    SERVICESTATUS_UPDATING(3),
-    /**
-     * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
-     */
-    SERVICESTATUS_PENDING_REMOVAL(4),
-    /**
-     * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
-     */
-    SERVICESTATUS_SLA_VIOLATED(5),
-    UNRECOGNIZED(-1),
-    ;
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    /**
-     * <code>SERVICESTATUS_UNDEFINED = 0;</code>
-     */
-    public static final int SERVICESTATUS_UNDEFINED_VALUE = 0;
-    /**
-     * <code>SERVICESTATUS_PLANNED = 1;</code>
-     */
-    public static final int SERVICESTATUS_PLANNED_VALUE = 1;
-    /**
-     * <code>SERVICESTATUS_ACTIVE = 2;</code>
-     */
-    public static final int SERVICESTATUS_ACTIVE_VALUE = 2;
-    /**
-     * <code>SERVICESTATUS_UPDATING = 3;</code>
-     */
-    public static final int SERVICESTATUS_UPDATING_VALUE = 3;
-    /**
-     * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
-     */
-    public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 4;
-    /**
-     * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
-     */
-    public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 5;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3);
+        }
 
+        private static final ServiceTypeEnum[] VALUES = values();
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        public static ServiceTypeEnum 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 ServiceTypeEnum(int value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * Protobuf enum {@code context.ServiceStatusEnum}
+     */
+    public enum ServiceStatusEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>SERVICESTATUS_UNDEFINED = 0;</code>
+         */
+        SERVICESTATUS_UNDEFINED(0),
+        /**
+         * <code>SERVICESTATUS_PLANNED = 1;</code>
+         */
+        SERVICESTATUS_PLANNED(1),
+        /**
+         * <code>SERVICESTATUS_ACTIVE = 2;</code>
+         */
+        SERVICESTATUS_ACTIVE(2),
+        /**
+         * <code>SERVICESTATUS_UPDATING = 3;</code>
+         */
+        SERVICESTATUS_UPDATING(3),
+        /**
+         * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
+         */
+        SERVICESTATUS_PENDING_REMOVAL(4),
+        /**
+         * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
+         */
+        SERVICESTATUS_SLA_VIOLATED(5),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>SERVICESTATUS_UNDEFINED = 0;</code>
+         */
+        public static final int SERVICESTATUS_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>SERVICESTATUS_PLANNED = 1;</code>
+         */
+        public static final int SERVICESTATUS_PLANNED_VALUE = 1;
+
+        /**
+         * <code>SERVICESTATUS_ACTIVE = 2;</code>
+         */
+        public static final int SERVICESTATUS_ACTIVE_VALUE = 2;
+
+        /**
+         * <code>SERVICESTATUS_UPDATING = 3;</code>
+         */
+        public static final int SERVICESTATUS_UPDATING_VALUE = 3;
+
+        /**
+         * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
+         */
+        public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 4;
+
+        /**
+         * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
+         */
+        public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 5;
+
+        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 ServiceStatusEnum 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 ServiceStatusEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return SERVICESTATUS_UNDEFINED;
+                case 1:
+                    return SERVICESTATUS_PLANNED;
+                case 2:
+                    return SERVICESTATUS_ACTIVE;
+                case 3:
+                    return SERVICESTATUS_UPDATING;
+                case 4:
+                    return SERVICESTATUS_PENDING_REMOVAL;
+                case 5:
+                    return SERVICESTATUS_SLA_VIOLATED;
+                default:
+                    return null;
+            }
+        }
 
-    /**
-     * @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 ServiceStatusEnum valueOf(int value) {
-      return forNumber(value);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static ServiceStatusEnum forNumber(int value) {
-      switch (value) {
-        case 0: return SERVICESTATUS_UNDEFINED;
-        case 1: return SERVICESTATUS_PLANNED;
-        case 2: return SERVICESTATUS_ACTIVE;
-        case 3: return SERVICESTATUS_UPDATING;
-        case 4: return SERVICESTATUS_PENDING_REMOVAL;
-        case 5: return SERVICESTATUS_SLA_VIOLATED;
-        default: return null;
-      }
-    }
+        private static final com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        ServiceStatusEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum>() {
             public ServiceStatusEnum findValueByNumber(int number) {
-              return ServiceStatusEnum.forNumber(number);
+                return ServiceStatusEnum.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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(4);
-    }
+        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());
+        }
 
-    private static final ServiceStatusEnum[] VALUES = values();
-
-    public static ServiceStatusEnum 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()];
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    private final int value;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4);
+        }
 
-    private ServiceStatusEnum(int value) {
-      this.value = value;
-    }
+        private static final ServiceStatusEnum[] VALUES = values();
 
-    // @@protoc_insertion_point(enum_scope:context.ServiceStatusEnum)
-  }
+        public static ServiceStatusEnum 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 ServiceStatusEnum(int value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * Protobuf enum {@code context.SliceStatusEnum}
+     */
+    public enum SliceStatusEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>SLICESTATUS_UNDEFINED = 0;</code>
+         */
+        SLICESTATUS_UNDEFINED(0),
+        /**
+         * <code>SLICESTATUS_PLANNED = 1;</code>
+         */
+        SLICESTATUS_PLANNED(1),
+        /**
+         * <code>SLICESTATUS_INIT = 2;</code>
+         */
+        SLICESTATUS_INIT(2),
+        /**
+         * <code>SLICESTATUS_ACTIVE = 3;</code>
+         */
+        SLICESTATUS_ACTIVE(3),
+        /**
+         * <code>SLICESTATUS_DEINIT = 4;</code>
+         */
+        SLICESTATUS_DEINIT(4),
+        /**
+         * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
+         */
+        SLICESTATUS_SLA_VIOLATED(5),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>SLICESTATUS_UNDEFINED = 0;</code>
+         */
+        public static final int SLICESTATUS_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>SLICESTATUS_PLANNED = 1;</code>
+         */
+        public static final int SLICESTATUS_PLANNED_VALUE = 1;
+
+        /**
+         * <code>SLICESTATUS_INIT = 2;</code>
+         */
+        public static final int SLICESTATUS_INIT_VALUE = 2;
+
+        /**
+         * <code>SLICESTATUS_ACTIVE = 3;</code>
+         */
+        public static final int SLICESTATUS_ACTIVE_VALUE = 3;
+
+        /**
+         * <code>SLICESTATUS_DEINIT = 4;</code>
+         */
+        public static final int SLICESTATUS_DEINIT_VALUE = 4;
+
+        /**
+         * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
+         */
+        public static final int SLICESTATUS_SLA_VIOLATED_VALUE = 5;
+
+        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 SliceStatusEnum 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 SliceStatusEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return SLICESTATUS_UNDEFINED;
+                case 1:
+                    return SLICESTATUS_PLANNED;
+                case 2:
+                    return SLICESTATUS_INIT;
+                case 3:
+                    return SLICESTATUS_ACTIVE;
+                case 4:
+                    return SLICESTATUS_DEINIT;
+                case 5:
+                    return SLICESTATUS_SLA_VIOLATED;
+                default:
+                    return null;
+            }
+        }
 
-  /**
-   * Protobuf enum {@code context.SliceStatusEnum}
-   */
-  public enum SliceStatusEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>SLICESTATUS_UNDEFINED = 0;</code>
-     */
-    SLICESTATUS_UNDEFINED(0),
-    /**
-     * <code>SLICESTATUS_PLANNED = 1;</code>
-     */
-    SLICESTATUS_PLANNED(1),
-    /**
-     * <code>SLICESTATUS_INIT = 2;</code>
-     */
-    SLICESTATUS_INIT(2),
-    /**
-     * <code>SLICESTATUS_ACTIVE = 3;</code>
-     */
-    SLICESTATUS_ACTIVE(3),
-    /**
-     * <code>SLICESTATUS_DEINIT = 4;</code>
-     */
-    SLICESTATUS_DEINIT(4),
-    /**
-     * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
-     */
-    SLICESTATUS_SLA_VIOLATED(5),
-    UNRECOGNIZED(-1),
-    ;
-
-    /**
-     * <code>SLICESTATUS_UNDEFINED = 0;</code>
-     */
-    public static final int SLICESTATUS_UNDEFINED_VALUE = 0;
-    /**
-     * <code>SLICESTATUS_PLANNED = 1;</code>
-     */
-    public static final int SLICESTATUS_PLANNED_VALUE = 1;
-    /**
-     * <code>SLICESTATUS_INIT = 2;</code>
-     */
-    public static final int SLICESTATUS_INIT_VALUE = 2;
-    /**
-     * <code>SLICESTATUS_ACTIVE = 3;</code>
-     */
-    public static final int SLICESTATUS_ACTIVE_VALUE = 3;
-    /**
-     * <code>SLICESTATUS_DEINIT = 4;</code>
-     */
-    public static final int SLICESTATUS_DEINIT_VALUE = 4;
-    /**
-     * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
-     */
-    public static final int SLICESTATUS_SLA_VIOLATED_VALUE = 5;
-
-
-    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 SliceStatusEnum valueOf(int value) {
-      return forNumber(value);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static SliceStatusEnum forNumber(int value) {
-      switch (value) {
-        case 0: return SLICESTATUS_UNDEFINED;
-        case 1: return SLICESTATUS_PLANNED;
-        case 2: return SLICESTATUS_INIT;
-        case 3: return SLICESTATUS_ACTIVE;
-        case 4: return SLICESTATUS_DEINIT;
-        case 5: return SLICESTATUS_SLA_VIOLATED;
-        default: return null;
-      }
-    }
+        private static final com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        SliceStatusEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum>() {
             public SliceStatusEnum findValueByNumber(int number) {
-              return SliceStatusEnum.forNumber(number);
+                return SliceStatusEnum.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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(5);
-    }
+        };
 
-    private static final SliceStatusEnum[] VALUES = values();
-
-    public static SliceStatusEnum 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()];
-    }
+        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());
+        }
 
-    private final int value;
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    private SliceStatusEnum(int value) {
-      this.value = value;
-    }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5);
+        }
 
-    // @@protoc_insertion_point(enum_scope:context.SliceStatusEnum)
-  }
-
-  /**
-   * <pre>
-   * ----- Configuration -------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf enum {@code context.ConfigActionEnum}
-   */
-  public enum ConfigActionEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>CONFIGACTION_UNDEFINED = 0;</code>
-     */
-    CONFIGACTION_UNDEFINED(0),
-    /**
-     * <code>CONFIGACTION_SET = 1;</code>
-     */
-    CONFIGACTION_SET(1),
-    /**
-     * <code>CONFIGACTION_DELETE = 2;</code>
-     */
-    CONFIGACTION_DELETE(2),
-    UNRECOGNIZED(-1),
-    ;
+        private static final SliceStatusEnum[] VALUES = values();
 
-    /**
-     * <code>CONFIGACTION_UNDEFINED = 0;</code>
-     */
-    public static final int CONFIGACTION_UNDEFINED_VALUE = 0;
-    /**
-     * <code>CONFIGACTION_SET = 1;</code>
-     */
-    public static final int CONFIGACTION_SET_VALUE = 1;
-    /**
-     * <code>CONFIGACTION_DELETE = 2;</code>
-     */
-    public static final int CONFIGACTION_DELETE_VALUE = 2;
+        public static SliceStatusEnum 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;
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
+        private SliceStatusEnum(int value) {
+            this.value = 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 ConfigActionEnum valueOf(int value) {
-      return forNumber(value);
-    }
+     * <pre>
+     * ----- Configuration -------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf enum {@code context.ConfigActionEnum}
+     */
+    public enum ConfigActionEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>CONFIGACTION_UNDEFINED = 0;</code>
+         */
+        CONFIGACTION_UNDEFINED(0),
+        /**
+         * <code>CONFIGACTION_SET = 1;</code>
+         */
+        CONFIGACTION_SET(1),
+        /**
+         * <code>CONFIGACTION_DELETE = 2;</code>
+         */
+        CONFIGACTION_DELETE(2),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>CONFIGACTION_UNDEFINED = 0;</code>
+         */
+        public static final int CONFIGACTION_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>CONFIGACTION_SET = 1;</code>
+         */
+        public static final int CONFIGACTION_SET_VALUE = 1;
+
+        /**
+         * <code>CONFIGACTION_DELETE = 2;</code>
+         */
+        public static final int CONFIGACTION_DELETE_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 ConfigActionEnum 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 ConfigActionEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return CONFIGACTION_UNDEFINED;
+                case 1:
+                    return CONFIGACTION_SET;
+                case 2:
+                    return CONFIGACTION_DELETE;
+                default:
+                    return null;
+            }
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static ConfigActionEnum forNumber(int value) {
-      switch (value) {
-        case 0: return CONFIGACTION_UNDEFINED;
-        case 1: return CONFIGACTION_SET;
-        case 2: return CONFIGACTION_DELETE;
-        default: return null;
-      }
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
+
+        private static final com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        ConfigActionEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum>() {
             public ConfigActionEnum findValueByNumber(int number) {
-              return ConfigActionEnum.forNumber(number);
+                return ConfigActionEnum.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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(6);
-    }
-
-    private static final ConfigActionEnum[] VALUES = values();
-
-    public static ConfigActionEnum 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;
+        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());
+        }
 
-    private ConfigActionEnum(int value) {
-      this.value = value;
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    // @@protoc_insertion_point(enum_scope:context.ConfigActionEnum)
-  }
-
-  /**
-   * <pre>
-   * ----- Constraint ----------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf enum {@code context.ConstraintActionEnum}
-   */
-  public enum ConstraintActionEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
-     */
-    CONSTRAINTACTION_UNDEFINED(0),
-    /**
-     * <code>CONSTRAINTACTION_SET = 1;</code>
-     */
-    CONSTRAINTACTION_SET(1),
-    /**
-     * <code>CONSTRAINTACTION_DELETE = 2;</code>
-     */
-    CONSTRAINTACTION_DELETE(2),
-    UNRECOGNIZED(-1),
-    ;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6);
+        }
 
-    /**
-     * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
-     */
-    public static final int CONSTRAINTACTION_UNDEFINED_VALUE = 0;
-    /**
-     * <code>CONSTRAINTACTION_SET = 1;</code>
-     */
-    public static final int CONSTRAINTACTION_SET_VALUE = 1;
-    /**
-     * <code>CONSTRAINTACTION_DELETE = 2;</code>
-     */
-    public static final int CONSTRAINTACTION_DELETE_VALUE = 2;
+        private static final ConfigActionEnum[] VALUES = values();
 
+        public static ConfigActionEnum 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()];
+        }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        private final int 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 ConstraintActionEnum valueOf(int value) {
-      return forNumber(value);
+        private ConfigActionEnum(int value) {
+            this.value = value;
+        }
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static ConstraintActionEnum forNumber(int value) {
-      switch (value) {
-        case 0: return CONSTRAINTACTION_UNDEFINED;
-        case 1: return CONSTRAINTACTION_SET;
-        case 2: return CONSTRAINTACTION_DELETE;
-        default: return null;
-      }
-    }
-
-    public static com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        ConstraintActionEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum>() {
-            public ConstraintActionEnum findValueByNumber(int number) {
-              return ConstraintActionEnum.forNumber(number);
+     * <pre>
+     * ----- Constraint ----------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf enum {@code context.ConstraintActionEnum}
+     */
+    public enum ConstraintActionEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
+         */
+        CONSTRAINTACTION_UNDEFINED(0),
+        /**
+         * <code>CONSTRAINTACTION_SET = 1;</code>
+         */
+        CONSTRAINTACTION_SET(1),
+        /**
+         * <code>CONSTRAINTACTION_DELETE = 2;</code>
+         */
+        CONSTRAINTACTION_DELETE(2),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
+         */
+        public static final int CONSTRAINTACTION_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>CONSTRAINTACTION_SET = 1;</code>
+         */
+        public static final int CONSTRAINTACTION_SET_VALUE = 1;
+
+        /**
+         * <code>CONSTRAINTACTION_DELETE = 2;</code>
+         */
+        public static final int CONSTRAINTACTION_DELETE_VALUE = 2;
+
+        public final int getNumber() {
+            if (this == UNRECOGNIZED) {
+                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
             }
-          };
-
-    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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(7);
-    }
+            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 ConstraintActionEnum 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 ConstraintActionEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return CONSTRAINTACTION_UNDEFINED;
+                case 1:
+                    return CONSTRAINTACTION_SET;
+                case 2:
+                    return CONSTRAINTACTION_DELETE;
+                default:
+                    return null;
+            }
+        }
 
-    private static final ConstraintActionEnum[] VALUES = values();
-
-    public static ConstraintActionEnum 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()];
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private final int value;
+        private static final com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum>() {
 
-    private ConstraintActionEnum(int value) {
-      this.value = value;
-    }
+            public ConstraintActionEnum findValueByNumber(int number) {
+                return ConstraintActionEnum.forNumber(number);
+            }
+        };
 
-    // @@protoc_insertion_point(enum_scope:context.ConstraintActionEnum)
-  }
+        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());
+        }
 
-  /**
-   * Protobuf enum {@code context.IsolationLevelEnum}
-   */
-  public enum IsolationLevelEnum
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>NO_ISOLATION = 0;</code>
-     */
-    NO_ISOLATION(0),
-    /**
-     * <code>PHYSICAL_ISOLATION = 1;</code>
-     */
-    PHYSICAL_ISOLATION(1),
-    /**
-     * <code>LOGICAL_ISOLATION = 2;</code>
-     */
-    LOGICAL_ISOLATION(2),
-    /**
-     * <code>PROCESS_ISOLATION = 3;</code>
-     */
-    PROCESS_ISOLATION(3),
-    /**
-     * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
-     */
-    PHYSICAL_MEMORY_ISOLATION(4),
-    /**
-     * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
-     */
-    PHYSICAL_NETWORK_ISOLATION(5),
-    /**
-     * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
-     */
-    VIRTUAL_RESOURCE_ISOLATION(6),
-    /**
-     * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
-     */
-    NETWORK_FUNCTIONS_ISOLATION(7),
-    /**
-     * <code>SERVICE_ISOLATION = 8;</code>
-     */
-    SERVICE_ISOLATION(8),
-    UNRECOGNIZED(-1),
-    ;
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    /**
-     * <code>NO_ISOLATION = 0;</code>
-     */
-    public static final int NO_ISOLATION_VALUE = 0;
-    /**
-     * <code>PHYSICAL_ISOLATION = 1;</code>
-     */
-    public static final int PHYSICAL_ISOLATION_VALUE = 1;
-    /**
-     * <code>LOGICAL_ISOLATION = 2;</code>
-     */
-    public static final int LOGICAL_ISOLATION_VALUE = 2;
-    /**
-     * <code>PROCESS_ISOLATION = 3;</code>
-     */
-    public static final int PROCESS_ISOLATION_VALUE = 3;
-    /**
-     * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
-     */
-    public static final int PHYSICAL_MEMORY_ISOLATION_VALUE = 4;
-    /**
-     * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
-     */
-    public static final int PHYSICAL_NETWORK_ISOLATION_VALUE = 5;
-    /**
-     * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
-     */
-    public static final int VIRTUAL_RESOURCE_ISOLATION_VALUE = 6;
-    /**
-     * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
-     */
-    public static final int NETWORK_FUNCTIONS_ISOLATION_VALUE = 7;
-    /**
-     * <code>SERVICE_ISOLATION = 8;</code>
-     */
-    public static final int SERVICE_ISOLATION_VALUE = 8;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7);
+        }
 
+        private static final ConstraintActionEnum[] VALUES = values();
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        public static ConstraintActionEnum 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 ConstraintActionEnum(int value) {
+            this.value = value;
+        }
+    }
+
+    /**
+     * Protobuf enum {@code context.IsolationLevelEnum}
+     */
+    public enum IsolationLevelEnum implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>NO_ISOLATION = 0;</code>
+         */
+        NO_ISOLATION(0),
+        /**
+         * <code>PHYSICAL_ISOLATION = 1;</code>
+         */
+        PHYSICAL_ISOLATION(1),
+        /**
+         * <code>LOGICAL_ISOLATION = 2;</code>
+         */
+        LOGICAL_ISOLATION(2),
+        /**
+         * <code>PROCESS_ISOLATION = 3;</code>
+         */
+        PROCESS_ISOLATION(3),
+        /**
+         * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
+         */
+        PHYSICAL_MEMORY_ISOLATION(4),
+        /**
+         * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
+         */
+        PHYSICAL_NETWORK_ISOLATION(5),
+        /**
+         * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
+         */
+        VIRTUAL_RESOURCE_ISOLATION(6),
+        /**
+         * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
+         */
+        NETWORK_FUNCTIONS_ISOLATION(7),
+        /**
+         * <code>SERVICE_ISOLATION = 8;</code>
+         */
+        SERVICE_ISOLATION(8),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>NO_ISOLATION = 0;</code>
+         */
+        public static final int NO_ISOLATION_VALUE = 0;
+
+        /**
+         * <code>PHYSICAL_ISOLATION = 1;</code>
+         */
+        public static final int PHYSICAL_ISOLATION_VALUE = 1;
+
+        /**
+         * <code>LOGICAL_ISOLATION = 2;</code>
+         */
+        public static final int LOGICAL_ISOLATION_VALUE = 2;
+
+        /**
+         * <code>PROCESS_ISOLATION = 3;</code>
+         */
+        public static final int PROCESS_ISOLATION_VALUE = 3;
+
+        /**
+         * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
+         */
+        public static final int PHYSICAL_MEMORY_ISOLATION_VALUE = 4;
+
+        /**
+         * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
+         */
+        public static final int PHYSICAL_NETWORK_ISOLATION_VALUE = 5;
+
+        /**
+         * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
+         */
+        public static final int VIRTUAL_RESOURCE_ISOLATION_VALUE = 6;
+
+        /**
+         * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
+         */
+        public static final int NETWORK_FUNCTIONS_ISOLATION_VALUE = 7;
+
+        /**
+         * <code>SERVICE_ISOLATION = 8;</code>
+         */
+        public static final int SERVICE_ISOLATION_VALUE = 8;
+
+        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 IsolationLevelEnum 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 IsolationLevelEnum forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return NO_ISOLATION;
+                case 1:
+                    return PHYSICAL_ISOLATION;
+                case 2:
+                    return LOGICAL_ISOLATION;
+                case 3:
+                    return PROCESS_ISOLATION;
+                case 4:
+                    return PHYSICAL_MEMORY_ISOLATION;
+                case 5:
+                    return PHYSICAL_NETWORK_ISOLATION;
+                case 6:
+                    return VIRTUAL_RESOURCE_ISOLATION;
+                case 7:
+                    return NETWORK_FUNCTIONS_ISOLATION;
+                case 8:
+                    return SERVICE_ISOLATION;
+                default:
+                    return null;
+            }
+        }
 
-    /**
-     * @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 IsolationLevelEnum valueOf(int value) {
-      return forNumber(value);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
-     */
-    public static IsolationLevelEnum forNumber(int value) {
-      switch (value) {
-        case 0: return NO_ISOLATION;
-        case 1: return PHYSICAL_ISOLATION;
-        case 2: return LOGICAL_ISOLATION;
-        case 3: return PROCESS_ISOLATION;
-        case 4: return PHYSICAL_MEMORY_ISOLATION;
-        case 5: return PHYSICAL_NETWORK_ISOLATION;
-        case 6: return VIRTUAL_RESOURCE_ISOLATION;
-        case 7: return NETWORK_FUNCTIONS_ISOLATION;
-        case 8: return SERVICE_ISOLATION;
-        default: return null;
-      }
-    }
+        private static final com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        IsolationLevelEnum> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum>() {
             public IsolationLevelEnum findValueByNumber(int number) {
-              return IsolationLevelEnum.forNumber(number);
+                return IsolationLevelEnum.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 context.ContextOuterClass.getDescriptor().getEnumTypes().get(8);
-    }
-
-    private static final IsolationLevelEnum[] VALUES = values();
-
-    public static IsolationLevelEnum 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 IsolationLevelEnum(int value) {
-      this.value = value;
-    }
-
-    // @@protoc_insertion_point(enum_scope:context.IsolationLevelEnum)
-  }
-
-  public interface EmptyOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Empty)
-      com.google.protobuf.MessageOrBuilder {
-  }
-  /**
-   * <pre>
-   * ----- Generic -------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.Empty}
-   */
-  public static final class Empty extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Empty)
-      EmptyOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Empty.newBuilder() to construct.
-    private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Empty() {
-    }
+        };
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Empty();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Empty(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Empty_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.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;
-    }
+        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());
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      unknownFields.writeTo(output);
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8);
+        }
 
-      size = 0;
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private static final IsolationLevelEnum[] VALUES = values();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Empty)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;
-
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static IsolationLevelEnum 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()];
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private final int value;
 
-    public static context.ContextOuterClass.Empty parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Empty parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Empty parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
+        private IsolationLevelEnum(int value) {
+            this.value = value;
+        }
     }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Empty prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+    public interface EmptyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Empty)
+    com.google.protobuf.MessageOrBuilder {
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
     /**
      * <pre>
      * ----- Generic -------------------------------------------------------------------------------------------------------
@@ -1535,74918 +1322,68464 @@ public final class ContextOuterClass {
      *
      * Protobuf type {@code context.Empty}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Empty)
-        context.ContextOuterClass.EmptyOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Empty_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Empty.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Empty_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Empty getDefaultInstanceForType() {
-        return context.ContextOuterClass.Empty.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Empty build() {
-        context.ContextOuterClass.Empty result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Empty buildPartial() {
-        context.ContextOuterClass.Empty result = new context.ContextOuterClass.Empty(this);
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Empty) {
-          return mergeFrom((context.ContextOuterClass.Empty)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Empty other) {
-        if (other == context.ContextOuterClass.Empty.getDefaultInstance()) return this;
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Empty parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Empty) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Empty)
-    }
-
-    // @@protoc_insertion_point(class_scope:context.Empty)
-    private static final context.ContextOuterClass.Empty DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Empty();
-    }
+    public static final class Empty extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Empty)
+    EmptyOrBuilder {
 
-    public static context.ContextOuterClass.Empty getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private static final long serialVersionUID = 0L;
 
-    private static final com.google.protobuf.Parser<Empty>
-        PARSER = new com.google.protobuf.AbstractParser<Empty>() {
-      @java.lang.Override
-      public Empty parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Empty(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Empty> parser() {
-      return PARSER;
-    }
+        // Use Empty.newBuilder() to construct.
+        private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Empty> getParserForType() {
-      return PARSER;
-    }
+        private Empty() {
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Empty getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Empty();
+        }
 
-  }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Empty_descriptor;
+        }
 
-  public interface UuidOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Uuid)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
+        }
 
-    /**
-     * <code>string uuid = 1;</code>
-     * @return The uuid.
-     */
-    java.lang.String getUuid();
-    /**
-     * <code>string uuid = 1;</code>
-     * @return The bytes for uuid.
-     */
-    com.google.protobuf.ByteString
-        getUuidBytes();
-  }
-  /**
-   * Protobuf type {@code context.Uuid}
-   */
-  public static final class Uuid extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Uuid)
-      UuidOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Uuid.newBuilder() to construct.
-    private Uuid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Uuid() {
-      uuid_ = "";
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Uuid();
-    }
+        @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 final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Uuid(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              uuid_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    public static final int UUID_FIELD_NUMBER = 1;
-    private volatile java.lang.Object uuid_;
-    /**
-     * <code>string uuid = 1;</code>
-     * @return The uuid.
-     */
-    @java.lang.Override
-    public java.lang.String getUuid() {
-      java.lang.Object ref = uuid_;
-      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();
-        uuid_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string uuid = 1;</code>
-     * @return The bytes for uuid.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getUuidBytes() {
-      java.lang.Object ref = uuid_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        uuid_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Empty)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @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;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getUuidBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Empty parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getUuidBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Uuid)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;
-
-      if (!getUuid()
-          .equals(other.getUuid())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + UUID_FIELD_NUMBER;
-      hash = (53 * hash) + getUuid().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.Uuid parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Uuid parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Uuid parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Empty parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Uuid prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Uuid}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Uuid)
-        context.ContextOuterClass.UuidOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Uuid.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        uuid_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
-        return context.ContextOuterClass.Uuid.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Uuid build() {
-        context.ContextOuterClass.Uuid result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Uuid buildPartial() {
-        context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
-        result.uuid_ = uuid_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Uuid) {
-          return mergeFrom((context.ContextOuterClass.Uuid)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Uuid other) {
-        if (other == context.ContextOuterClass.Uuid.getDefaultInstance()) return this;
-        if (!other.getUuid().isEmpty()) {
-          uuid_ = other.uuid_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Uuid parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Uuid) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object uuid_ = "";
-      /**
-       * <code>string uuid = 1;</code>
-       * @return The uuid.
-       */
-      public java.lang.String getUuid() {
-        java.lang.Object ref = uuid_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          uuid_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string uuid = 1;</code>
-       * @return The bytes for uuid.
-       */
-      public com.google.protobuf.ByteString
-          getUuidBytes() {
-        java.lang.Object ref = uuid_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          uuid_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string uuid = 1;</code>
-       * @param value The uuid to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUuid(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string uuid = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearUuid() {
-        
-        uuid_ = getDefaultInstance().getUuid();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string uuid = 1;</code>
-       * @param value The bytes for uuid to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUuidBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        uuid_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Uuid)
-    }
+        public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.Uuid)
-    private static final context.ContextOuterClass.Uuid DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Uuid();
-    }
+        public static context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    public static context.ContextOuterClass.Uuid getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<Uuid>
-        PARSER = new com.google.protobuf.AbstractParser<Uuid>() {
-      @java.lang.Override
-      public Uuid parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Uuid(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Uuid> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Uuid> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-  }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-  public interface TimestampOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Timestamp)
-      com.google.protobuf.MessageOrBuilder {
+        public static Builder newBuilder(context.ContextOuterClass.Empty prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    /**
-     * <code>double timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    double getTimestamp();
-  }
-  /**
-   * Protobuf type {@code context.Timestamp}
-   */
-  public static final class Timestamp extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Timestamp)
-      TimestampOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Timestamp.newBuilder() to construct.
-    private Timestamp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Timestamp() {
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Timestamp();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Timestamp(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 9: {
-
-              timestamp_ = input.readDouble();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
-    }
+        /**
+         * <pre>
+         * ----- Generic -------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.Empty}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Empty)
+        context.ContextOuterClass.EmptyOrBuilder {
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Empty_descriptor;
+            }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 1;
-    private double timestamp_;
-    /**
-     * <code>double timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public double getTimestamp() {
-      return timestamp_;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.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;
+            // Construct using context.ContextOuterClass.Empty.newBuilder()
+            private Builder() {
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (timestamp_ != 0D) {
-        output.writeDouble(1, timestamp_);
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (timestamp_ != 0D) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeDoubleSize(1, timestamp_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Empty_descriptor;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Timestamp)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;
-
-      if (java.lang.Double.doubleToLongBits(getTimestamp())
-          != java.lang.Double.doubleToLongBits(
-              other.getTimestamp())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Empty getDefaultInstanceForType() {
+                return context.ContextOuterClass.Empty.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-          java.lang.Double.doubleToLongBits(getTimestamp()));
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Empty build() {
+                context.ContextOuterClass.Empty result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Timestamp parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Timestamp parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Empty buildPartial() {
+                context.ContextOuterClass.Empty result = new context.ContextOuterClass.Empty(this);
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Timestamp 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
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Empty) {
+                    return mergeFrom((context.ContextOuterClass.Empty) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Timestamp}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Timestamp)
-        context.ContextOuterClass.TimestampOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Timestamp.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        timestamp_ = 0D;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
-        return context.ContextOuterClass.Timestamp.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Timestamp build() {
-        context.ContextOuterClass.Timestamp result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Timestamp buildPartial() {
-        context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
-        result.timestamp_ = timestamp_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Timestamp) {
-          return mergeFrom((context.ContextOuterClass.Timestamp)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Timestamp other) {
-        if (other == context.ContextOuterClass.Timestamp.getDefaultInstance()) return this;
-        if (other.getTimestamp() != 0D) {
-          setTimestamp(other.getTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Timestamp parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Timestamp) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private double timestamp_ ;
-      /**
-       * <code>double timestamp = 1;</code>
-       * @return The timestamp.
-       */
-      @java.lang.Override
-      public double getTimestamp() {
-        return timestamp_;
-      }
-      /**
-       * <code>double timestamp = 1;</code>
-       * @param value The timestamp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTimestamp(double value) {
-        
-        timestamp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>double timestamp = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTimestamp() {
-        
-        timestamp_ = 0D;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Timestamp)
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Empty other) {
+                if (other == context.ContextOuterClass.Empty.getDefaultInstance())
+                    return this;
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.Timestamp)
-    private static final context.ContextOuterClass.Timestamp DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Timestamp();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    public static context.ContextOuterClass.Timestamp getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @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)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<Timestamp>
-        PARSER = new com.google.protobuf.AbstractParser<Timestamp>() {
-      @java.lang.Override
-      public Timestamp parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Timestamp(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Timestamp> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Timestamp> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Empty)
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        // @@protoc_insertion_point(class_scope:context.Empty)
+        private static final context.ContextOuterClass.Empty DEFAULT_INSTANCE;
 
-  }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Empty();
+        }
 
-  public interface EventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Event)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Empty getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+        private static final com.google.protobuf.Parser<Empty> PARSER = new com.google.protobuf.AbstractParser<Empty>() {
 
-    /**
-     * <code>.context.EventTypeEnum event_type = 2;</code>
-     * @return The enum numeric value on the wire for eventType.
-     */
-    int getEventTypeValue();
-    /**
-     * <code>.context.EventTypeEnum event_type = 2;</code>
-     * @return The eventType.
-     */
-    context.ContextOuterClass.EventTypeEnum getEventType();
-  }
-  /**
-   * Protobuf type {@code context.Event}
-   */
-  public static final class Event extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Event)
-      EventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Event.newBuilder() to construct.
-    private Event(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Event() {
-      eventType_ = 0;
-    }
+            @java.lang.Override
+            public Empty 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();
+            }
+        };
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Event();
-    }
+        public static com.google.protobuf.Parser<Empty> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Event(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-
-              eventType_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Event_descriptor;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Empty> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
+        @java.lang.Override
+        public context.ContextOuterClass.Empty getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+    public interface UuidOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Uuid)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static final int EVENT_TYPE_FIELD_NUMBER = 2;
-    private int eventType_;
-    /**
-     * <code>.context.EventTypeEnum event_type = 2;</code>
-     * @return The enum numeric value on the wire for eventType.
-     */
-    @java.lang.Override public int getEventTypeValue() {
-      return eventType_;
+        /**
+         * <code>string uuid = 1;</code>
+         * @return The uuid.
+         */
+        java.lang.String getUuid();
+
+        /**
+         * <code>string uuid = 1;</code>
+         * @return The bytes for uuid.
+         */
+        com.google.protobuf.ByteString getUuidBytes();
     }
+
     /**
-     * <code>.context.EventTypeEnum event_type = 2;</code>
-     * @return The eventType.
+     * Protobuf type {@code context.Uuid}
      */
-    @java.lang.Override public context.ContextOuterClass.EventTypeEnum getEventType() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
-      return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
-    }
+    public static final class Uuid extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Uuid)
+    UuidOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use Uuid.newBuilder() to construct.
+        private Uuid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (timestamp_ != null) {
-        output.writeMessage(1, getTimestamp());
-      }
-      if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
-        output.writeEnum(2, eventType_);
-      }
-      unknownFields.writeTo(output);
-    }
+        private Uuid() {
+            uuid_ = "";
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTimestamp());
-      }
-      if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, eventType_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Uuid();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Event)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Event other = (context.ContextOuterClass.Event) obj;
-
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (eventType_ != other.eventType_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + eventType_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
+        }
 
-    public static context.ContextOuterClass.Event parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Event parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Event parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Event parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int UUID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Event prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object uuid_ = "";
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Event}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Event)
-        context.ContextOuterClass.EventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Event_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Event.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        eventType_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Event_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Event getDefaultInstanceForType() {
-        return context.ContextOuterClass.Event.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Event build() {
-        context.ContextOuterClass.Event result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Event buildPartial() {
-        context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        result.eventType_ = eventType_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Event) {
-          return mergeFrom((context.ContextOuterClass.Event)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Event other) {
-        if (other == context.ContextOuterClass.Event.getDefaultInstance()) return this;
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        if (other.eventType_ != 0) {
-          setEventTypeValue(other.getEventTypeValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Event parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Event) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-
-      private int eventType_ = 0;
-      /**
-       * <code>.context.EventTypeEnum event_type = 2;</code>
-       * @return The enum numeric value on the wire for eventType.
-       */
-      @java.lang.Override public int getEventTypeValue() {
-        return eventType_;
-      }
-      /**
-       * <code>.context.EventTypeEnum event_type = 2;</code>
-       * @param value The enum numeric value on the wire for eventType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEventTypeValue(int value) {
-        
-        eventType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.EventTypeEnum event_type = 2;</code>
-       * @return The eventType.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.EventTypeEnum getEventType() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.valueOf(eventType_);
-        return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.EventTypeEnum event_type = 2;</code>
-       * @param value The eventType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEventType(context.ContextOuterClass.EventTypeEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        eventType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.EventTypeEnum event_type = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEventType() {
-        
-        eventType_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Event)
-    }
+        /**
+         * <code>string uuid = 1;</code>
+         * @return The uuid.
+         */
+        @java.lang.Override
+        public java.lang.String getUuid() {
+            java.lang.Object ref = uuid_;
+            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();
+                uuid_ = s;
+                return s;
+            }
+        }
 
-    // @@protoc_insertion_point(class_scope:context.Event)
-    private static final context.ContextOuterClass.Event DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Event();
-    }
+        /**
+         * <code>string uuid = 1;</code>
+         * @return The bytes for uuid.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getUuidBytes() {
+            java.lang.Object ref = uuid_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                uuid_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    public static context.ContextOuterClass.Event getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    private static final com.google.protobuf.Parser<Event>
-        PARSER = new com.google.protobuf.AbstractParser<Event>() {
-      @java.lang.Override
-      public Event parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Event(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Event> parser() {
-      return PARSER;
-    }
+        @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 com.google.protobuf.Parser<Event> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Event getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
+            }
+            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 context.ContextOuterClass.Uuid)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;
+            if (!getUuid().equals(other.getUuid()))
+                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) + UUID_FIELD_NUMBER;
+            hash = (53 * hash) + getUuid().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-  public interface ContextIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ContextId)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Uuid parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     * @return Whether the contextUuid field is set.
-     */
-    boolean hasContextUuid();
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     * @return The contextUuid.
-     */
-    context.ContextOuterClass.Uuid getContextUuid();
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Context -------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.ContextId}
-   */
-  public static final class ContextId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ContextId)
-      ContextIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ContextId.newBuilder() to construct.
-    private ContextId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ContextId() {
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ContextId();
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ContextId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (contextUuid_ != null) {
-                subBuilder = contextUuid_.toBuilder();
-              }
-              contextUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextUuid_);
-                contextUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int CONTEXT_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid contextUuid_;
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     * @return Whether the contextUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextUuid() {
-      return contextUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     * @return The contextUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getContextUuid() {
-      return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
-    }
-    /**
-     * <code>.context.Uuid context_uuid = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
-      return getContextUuid();
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextUuid_ != null) {
-        output.writeMessage(1, getContextUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ContextId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ContextId other = (context.ContextOuterClass.ContextId) obj;
-
-      if (hasContextUuid() != other.hasContextUuid()) return false;
-      if (hasContextUuid()) {
-        if (!getContextUuid()
-            .equals(other.getContextUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextUuid()) {
-        hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.ContextId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ContextId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Context -------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.ContextId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ContextId)
-        context.ContextOuterClass.ContextIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ContextId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextUuidBuilder_ == null) {
-          contextUuid_ = null;
-        } else {
-          contextUuid_ = null;
-          contextUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
-        return context.ContextOuterClass.ContextId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextId build() {
-        context.ContextOuterClass.ContextId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextId buildPartial() {
-        context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
-        if (contextUuidBuilder_ == null) {
-          result.contextUuid_ = contextUuid_;
-        } else {
-          result.contextUuid_ = contextUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ContextId) {
-          return mergeFrom((context.ContextOuterClass.ContextId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ContextId other) {
-        if (other == context.ContextOuterClass.ContextId.getDefaultInstance()) return this;
-        if (other.hasContextUuid()) {
-          mergeContextUuid(other.getContextUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ContextId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ContextId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid contextUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       * @return Whether the contextUuid field is set.
-       */
-      public boolean hasContextUuid() {
-        return contextUuidBuilder_ != null || contextUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       * @return The contextUuid.
-       */
-      public context.ContextOuterClass.Uuid getContextUuid() {
-        if (contextUuidBuilder_ == null) {
-          return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
-        } else {
-          return contextUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public Builder setContextUuid(context.ContextOuterClass.Uuid value) {
-        if (contextUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextUuid_ = value;
-          onChanged();
-        } else {
-          contextUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public Builder setContextUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (contextUuidBuilder_ == null) {
-          contextUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
-        if (contextUuidBuilder_ == null) {
-          if (contextUuid_ != null) {
-            contextUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(contextUuid_).mergeFrom(value).buildPartial();
-          } else {
-            contextUuid_ = value;
-          }
-          onChanged();
-        } else {
-          contextUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public Builder clearContextUuid() {
-        if (contextUuidBuilder_ == null) {
-          contextUuid_ = null;
-          onChanged();
-        } else {
-          contextUuid_ = null;
-          contextUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
-        
-        onChanged();
-        return getContextUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
-        if (contextUuidBuilder_ != null) {
-          return contextUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return contextUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid context_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getContextUuidFieldBuilder() {
-        if (contextUuidBuilder_ == null) {
-          contextUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getContextUuid(),
-                  getParentForChildren(),
-                  isClean());
-          contextUuid_ = null;
-        }
-        return contextUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ContextId)
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Uuid prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ContextId)
-    private static final context.ContextOuterClass.ContextId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextId();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static context.ContextOuterClass.ContextId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    private static final com.google.protobuf.Parser<ContextId>
-        PARSER = new com.google.protobuf.AbstractParser<ContextId>() {
-      @java.lang.Override
-      public ContextId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ContextId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ContextId> parser() {
-      return PARSER;
-    }
+        /**
+         * Protobuf type {@code context.Uuid}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Uuid)
+        context.ContextOuterClass.UuidOrBuilder {
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ContextId> getParserForType() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
+            }
 
-  }
+            // Construct using context.ContextOuterClass.Uuid.newBuilder()
+            private Builder() {
+            }
 
-  public interface ContextOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Context)
-      com.google.protobuf.MessageOrBuilder {
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                uuid_ = "";
+                return this;
+            }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
+            }
 
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.TopologyId> 
-        getTopologyIdsList();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    context.ContextOuterClass.TopologyId getTopologyIds(int index);
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    int getTopologyIdsCount();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-        int index);
+            @java.lang.Override
+            public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
+                return context.ContextOuterClass.Uuid.getDefaultInstance();
+            }
 
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.ServiceId> 
-        getServiceIdsList();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    context.ContextOuterClass.ServiceId getServiceIds(int index);
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    int getServiceIdsCount();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index);
+            @java.lang.Override
+            public context.ContextOuterClass.Uuid build() {
+                context.ContextOuterClass.Uuid result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    java.util.List<context.ContextOuterClass.SliceId> 
-        getSliceIdsList();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    context.ContextOuterClass.SliceId getSliceIds(int index);
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    int getSliceIdsCount();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-        int index);
+            @java.lang.Override
+            public context.ContextOuterClass.Uuid buildPartial() {
+                context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     * @return Whether the controller field is set.
-     */
-    boolean hasController();
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     * @return The controller.
-     */
-    context.ContextOuterClass.TeraFlowController getController();
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     */
-    context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Context}
-   */
-  public static final class Context extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Context)
-      ContextOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Context.newBuilder() to construct.
-    private Context(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Context() {
-      name_ = "";
-      topologyIds_ = java.util.Collections.emptyList();
-      serviceIds_ = java.util.Collections.emptyList();
-      sliceIds_ = java.util.Collections.emptyList();
-    }
+            private void buildPartial0(context.ContextOuterClass.Uuid result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.uuid_ = uuid_;
+                }
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Context();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Uuid) {
+                    return mergeFrom((context.ContextOuterClass.Uuid) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Context(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              topologyIds_.add(
-                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              serviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              sliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.TeraFlowController.Builder subBuilder = null;
-              if (controller_ != null) {
-                subBuilder = controller_.toBuilder();
-              }
-              controller_ = input.readMessage(context.ContextOuterClass.TeraFlowController.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(controller_);
-                controller_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Context_descriptor;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Uuid other) {
+                if (other == context.ContextOuterClass.Uuid.getDefaultInstance())
+                    return this;
+                if (!other.getUuid().isEmpty()) {
+                    uuid_ = other.uuid_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+            @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:
+                                {
+                                    uuid_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+            private int bitField0_;
+
+            private java.lang.Object uuid_ = "";
+
+            /**
+             * <code>string uuid = 1;</code>
+             * @return The uuid.
+             */
+            public java.lang.String getUuid() {
+                java.lang.Object ref = uuid_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    uuid_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-      return topologyIds_;
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList() {
-      return topologyIds_;
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getTopologyIdsCount() {
-      return topologyIds_.size();
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-      return topologyIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-        int index) {
-      return topologyIds_.get(index);
-    }
+            /**
+             * <code>string uuid = 1;</code>
+             * @return The bytes for uuid.
+             */
+            public com.google.protobuf.ByteString getUuidBytes() {
+                java.lang.Object ref = uuid_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    uuid_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
-      return serviceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList() {
-      return serviceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public int getServiceIdsCount() {
-      return serviceIds_.size();
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-      return serviceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index) {
-      return serviceIds_.get(index);
-    }
+            /**
+             * <code>string uuid = 1;</code>
+             * @param value The uuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUuid(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                uuid_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static final int SLICE_IDS_FIELD_NUMBER = 5;
-    private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
-      return sliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceIdsOrBuilderList() {
-      return sliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    @java.lang.Override
-    public int getSliceIdsCount() {
-      return sliceIds_.size();
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceIds(int index) {
-      return sliceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-        int index) {
-      return sliceIds_.get(index);
-    }
+            /**
+             * <code>string uuid = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUuid() {
+                uuid_ = getDefaultInstance().getUuid();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
 
-    public static final int CONTROLLER_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.TeraFlowController controller_;
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     * @return Whether the controller field is set.
-     */
-    @java.lang.Override
-    public boolean hasController() {
-      return controller_ != null;
-    }
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     * @return The controller.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TeraFlowController getController() {
-      return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
-    }
-    /**
-     * <code>.context.TeraFlowController controller = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
-      return getController();
-    }
+            /**
+             * <code>string uuid = 1;</code>
+             * @param value The bytes for uuid to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUuidBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                uuid_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Uuid)
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < topologyIds_.size(); i++) {
-        output.writeMessage(3, topologyIds_.get(i));
-      }
-      for (int i = 0; i < serviceIds_.size(); i++) {
-        output.writeMessage(4, serviceIds_.get(i));
-      }
-      for (int i = 0; i < sliceIds_.size(); i++) {
-        output.writeMessage(5, sliceIds_.get(i));
-      }
-      if (controller_ != null) {
-        output.writeMessage(6, getController());
-      }
-      unknownFields.writeTo(output);
-    }
+        // @@protoc_insertion_point(class_scope:context.Uuid)
+        private static final context.ContextOuterClass.Uuid DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < topologyIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, topologyIds_.get(i));
-      }
-      for (int i = 0; i < serviceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, serviceIds_.get(i));
-      }
-      for (int i = 0; i < sliceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, sliceIds_.get(i));
-      }
-      if (controller_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getController());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Uuid();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Context)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Context other = (context.ContextOuterClass.Context) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getTopologyIdsList()
-          .equals(other.getTopologyIdsList())) return false;
-      if (!getServiceIdsList()
-          .equals(other.getServiceIdsList())) return false;
-      if (!getSliceIdsList()
-          .equals(other.getSliceIdsList())) return false;
-      if (hasController() != other.hasController()) return false;
-      if (hasController()) {
-        if (!getController()
-            .equals(other.getController())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Uuid getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (getTopologyIdsCount() > 0) {
-        hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyIdsList().hashCode();
-      }
-      if (getServiceIdsCount() > 0) {
-        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceIdsList().hashCode();
-      }
-      if (getSliceIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceIdsList().hashCode();
-      }
-      if (hasController()) {
-        hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
-        hash = (53 * hash) + getController().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private static final com.google.protobuf.Parser<Uuid> PARSER = new com.google.protobuf.AbstractParser<Uuid>() {
 
-    public static context.ContextOuterClass.Context parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Context parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Context parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Context parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public Uuid 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();
+            }
+        };
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Context prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static com.google.protobuf.Parser<Uuid> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Context}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Context)
-        context.ContextOuterClass.ContextOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Context_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Context.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getTopologyIdsFieldBuilder();
-          getServiceIdsFieldBuilder();
-          getSliceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          topologyIdsBuilder_.clear();
-        }
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          serviceIdsBuilder_.clear();
-        }
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          sliceIdsBuilder_.clear();
-        }
-        if (controllerBuilder_ == null) {
-          controller_ = null;
-        } else {
-          controller_ = null;
-          controllerBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Context_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Context getDefaultInstanceForType() {
-        return context.ContextOuterClass.Context.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Context build() {
-        context.ContextOuterClass.Context result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Context buildPartial() {
-        context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
-        int from_bitField0_ = bitField0_;
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (topologyIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.topologyIds_ = topologyIds_;
-        } else {
-          result.topologyIds_ = topologyIdsBuilder_.build();
-        }
-        if (serviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.serviceIds_ = serviceIds_;
-        } else {
-          result.serviceIds_ = serviceIdsBuilder_.build();
-        }
-        if (sliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.sliceIds_ = sliceIds_;
-        } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
-        }
-        if (controllerBuilder_ == null) {
-          result.controller_ = controller_;
-        } else {
-          result.controller_ = controllerBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Context) {
-          return mergeFrom((context.ContextOuterClass.Context)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Context other) {
-        if (other == context.ContextOuterClass.Context.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (topologyIdsBuilder_ == null) {
-          if (!other.topologyIds_.isEmpty()) {
-            if (topologyIds_.isEmpty()) {
-              topologyIds_ = other.topologyIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureTopologyIdsIsMutable();
-              topologyIds_.addAll(other.topologyIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.topologyIds_.isEmpty()) {
-            if (topologyIdsBuilder_.isEmpty()) {
-              topologyIdsBuilder_.dispose();
-              topologyIdsBuilder_ = null;
-              topologyIds_ = other.topologyIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              topologyIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getTopologyIdsFieldBuilder() : null;
-            } else {
-              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
-            }
-          }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Uuid> getParserForType() {
+            return PARSER;
         }
-        if (serviceIdsBuilder_ == null) {
-          if (!other.serviceIds_.isEmpty()) {
-            if (serviceIds_.isEmpty()) {
-              serviceIds_ = other.serviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureServiceIdsIsMutable();
-              serviceIds_.addAll(other.serviceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceIds_.isEmpty()) {
-            if (serviceIdsBuilder_.isEmpty()) {
-              serviceIdsBuilder_.dispose();
-              serviceIdsBuilder_ = null;
-              serviceIds_ = other.serviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              serviceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getServiceIdsFieldBuilder() : null;
-            } else {
-              serviceIdsBuilder_.addAllMessages(other.serviceIds_);
-            }
-          }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
         }
-        if (sliceIdsBuilder_ == null) {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIds_.isEmpty()) {
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureSliceIdsIsMutable();
-              sliceIds_.addAll(other.sliceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIdsBuilder_.isEmpty()) {
-              sliceIdsBuilder_.dispose();
-              sliceIdsBuilder_ = null;
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              sliceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceIdsFieldBuilder() : null;
-            } else {
-              sliceIdsBuilder_.addAllMessages(other.sliceIds_);
-            }
-          }
-        }
-        if (other.hasController()) {
-          mergeController(other.getController());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Context parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Context) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
-        java.util.Collections.emptyList();
-      private void ensureTopologyIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
-
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-        if (topologyIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(topologyIds_);
-        } else {
-          return topologyIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public int getTopologyIdsCount() {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.size();
-        } else {
-          return topologyIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);
-        } else {
-          return topologyIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder addTopologyIds(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder addAllTopologyIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, topologyIds_);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder clearTopologyIds() {
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public Builder removeTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.remove(index);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
-          int index) {
-        return getTopologyIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-          int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);  } else {
-          return topologyIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-           getTopologyIdsOrBuilderList() {
-        if (topologyIdsBuilder_ != null) {
-          return topologyIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(topologyIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.TopologyId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
-          int index) {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
-           getTopologyIdsBuilderList() {
-        return getTopologyIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdsFieldBuilder() {
-        if (topologyIdsBuilder_ == null) {
-          topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  topologyIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          topologyIds_ = null;
-        }
-        return topologyIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
-        if (serviceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(serviceIds_);
-        } else {
-          return serviceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public int getServiceIdsCount() {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.size();
-        } else {
-          return serviceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);
-        } else {
-          return serviceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder addServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(index, value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder addServiceIds(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder addServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder addAllServiceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, serviceIds_);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder clearServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public Builder removeServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.remove(index);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
-          int index) {
-        return getServiceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-          int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);  } else {
-          return serviceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getServiceIdsOrBuilderList() {
-        if (serviceIdsBuilder_ != null) {
-          return serviceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(serviceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
-        return getServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
-          int index) {
-        return getServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
-           getServiceIdsBuilderList() {
-        return getServiceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdsFieldBuilder() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  serviceIds_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceIds_ = null;
-        }
-        return serviceIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
-        if (sliceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceIds_);
-        } else {
-          return sliceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public int getSliceIdsCount() {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.size();
-        } else {
-          return sliceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public context.ContextOuterClass.SliceId getSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);
-        } else {
-          return sliceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder addSliceIds(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder addAllSliceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceIds_);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder clearSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public Builder removeSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.remove(index);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-          int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);  } else {
-          return sliceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-           getSliceIdsOrBuilderList() {
-        if (sliceIdsBuilder_ != null) {
-          return sliceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
-        return getSliceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
-           getSliceIdsBuilderList() {
-        return getSliceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdsFieldBuilder() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  sliceIds_,
-                  ((bitField0_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceIds_ = null;
-        }
-        return sliceIdsBuilder_;
-      }
-
-      private context.ContextOuterClass.TeraFlowController controller_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> controllerBuilder_;
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       * @return Whether the controller field is set.
-       */
-      public boolean hasController() {
-        return controllerBuilder_ != null || controller_ != null;
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       * @return The controller.
-       */
-      public context.ContextOuterClass.TeraFlowController getController() {
-        if (controllerBuilder_ == null) {
-          return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
-        } else {
-          return controllerBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public Builder setController(context.ContextOuterClass.TeraFlowController value) {
-        if (controllerBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          controller_ = value;
-          onChanged();
-        } else {
-          controllerBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public Builder setController(
-          context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
-        if (controllerBuilder_ == null) {
-          controller_ = builderForValue.build();
-          onChanged();
-        } else {
-          controllerBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
-        if (controllerBuilder_ == null) {
-          if (controller_ != null) {
-            controller_ =
-              context.ContextOuterClass.TeraFlowController.newBuilder(controller_).mergeFrom(value).buildPartial();
-          } else {
-            controller_ = value;
-          }
-          onChanged();
-        } else {
-          controllerBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public Builder clearController() {
-        if (controllerBuilder_ == null) {
-          controller_ = null;
-          onChanged();
-        } else {
-          controller_ = null;
-          controllerBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
-        
-        onChanged();
-        return getControllerFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
-        if (controllerBuilder_ != null) {
-          return controllerBuilder_.getMessageOrBuilder();
-        } else {
-          return controller_ == null ?
-              context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
-        }
-      }
-      /**
-       * <code>.context.TeraFlowController controller = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> 
-          getControllerFieldBuilder() {
-        if (controllerBuilder_ == null) {
-          controllerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder>(
-                  getController(),
-                  getParentForChildren(),
-                  isClean());
-          controller_ = null;
-        }
-        return controllerBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Context)
     }
 
-    // @@protoc_insertion_point(class_scope:context.Context)
-    private static final context.ContextOuterClass.Context DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Context();
-    }
+    public interface TimestampOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Timestamp)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static context.ContextOuterClass.Context getDefaultInstance() {
-      return DEFAULT_INSTANCE;
+        /**
+         * <code>double timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        double getTimestamp();
     }
 
-    private static final com.google.protobuf.Parser<Context>
-        PARSER = new com.google.protobuf.AbstractParser<Context>() {
-      @java.lang.Override
-      public Context parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Context(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Context> parser() {
-      return PARSER;
-    }
+    /**
+     * Protobuf type {@code context.Timestamp}
+     */
+    public static final class Timestamp extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Timestamp)
+    TimestampOrBuilder {
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Context> getParserForType() {
-      return PARSER;
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Context getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        // Use Timestamp.newBuilder() to construct.
+        private Timestamp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-  }
+        private Timestamp() {
+        }
 
-  public interface ContextIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ContextIdList)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Timestamp();
+        }
 
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ContextId> 
-        getContextIdsList();
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    context.ContextOuterClass.ContextId getContextIds(int index);
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    int getContextIdsCount();
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
-        getContextIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ContextIdList}
-   */
-  public static final class ContextIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ContextIdList)
-      ContextIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ContextIdList.newBuilder() to construct.
-    private ContextIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ContextIdList() {
-      contextIds_ = java.util.Collections.emptyList();
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ContextIdList();
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ContextIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              contextIds_.add(
-                  input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
-    }
+        public static final int TIMESTAMP_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
-    }
+        private double timestamp_ = 0D;
 
-    public static final int CONTEXT_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ContextId> contextIds_;
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
-      return contextIds_;
-    }
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
-        getContextIdsOrBuilderList() {
-      return contextIds_;
-    }
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getContextIdsCount() {
-      return contextIds_.size();
-    }
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextIds(int index) {
-      return contextIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ContextId context_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
-        int index) {
-      return contextIds_.get(index);
-    }
+        /**
+         * <code>double timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public double getTimestamp() {
+            return timestamp_;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private byte memoizedIsInitialized = -1;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < contextIds_.size(); i++) {
-        output.writeMessage(1, contextIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+                output.writeDouble(1, timestamp_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < contextIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, contextIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_);
+            }
+            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 context.ContextOuterClass.ContextIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;
-
-      if (!getContextIdsList()
-          .equals(other.getContextIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Timestamp)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;
+            if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp()))
+                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) + TIMESTAMP_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp()));
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getContextIdsCount() > 0) {
-        hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getContextIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ContextIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ContextIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ContextIdList)
-        context.ContextOuterClass.ContextIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getContextIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdsBuilder_ == null) {
-          contextIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          contextIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ContextIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextIdList build() {
-        context.ContextOuterClass.ContextIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextIdList buildPartial() {
-        context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (contextIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.contextIds_ = contextIds_;
-        } else {
-          result.contextIds_ = contextIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ContextIdList) {
-          return mergeFrom((context.ContextOuterClass.ContextIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ContextIdList other) {
-        if (other == context.ContextOuterClass.ContextIdList.getDefaultInstance()) return this;
-        if (contextIdsBuilder_ == null) {
-          if (!other.contextIds_.isEmpty()) {
-            if (contextIds_.isEmpty()) {
-              contextIds_ = other.contextIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureContextIdsIsMutable();
-              contextIds_.addAll(other.contextIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.contextIds_.isEmpty()) {
-            if (contextIdsBuilder_.isEmpty()) {
-              contextIdsBuilder_.dispose();
-              contextIdsBuilder_ = null;
-              contextIds_ = other.contextIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              contextIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getContextIdsFieldBuilder() : null;
-            } else {
-              contextIdsBuilder_.addAllMessages(other.contextIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ContextIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ContextIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ContextId> contextIds_ =
-        java.util.Collections.emptyList();
-      private void ensureContextIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>(contextIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
-        if (contextIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(contextIds_);
-        } else {
-          return contextIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public int getContextIdsCount() {
-        if (contextIdsBuilder_ == null) {
-          return contextIds_.size();
-        } else {
-          return contextIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId getContextIds(int index) {
-        if (contextIdsBuilder_ == null) {
-          return contextIds_.get(index);
-        } else {
-          return contextIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder setContextIds(
-          int index, context.ContextOuterClass.ContextId value) {
-        if (contextIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextIdsIsMutable();
-          contextIds_.set(index, value);
-          onChanged();
-        } else {
-          contextIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder setContextIds(
-          int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdsBuilder_ == null) {
-          ensureContextIdsIsMutable();
-          contextIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          contextIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder addContextIds(context.ContextOuterClass.ContextId value) {
-        if (contextIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextIdsIsMutable();
-          contextIds_.add(value);
-          onChanged();
-        } else {
-          contextIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder addContextIds(
-          int index, context.ContextOuterClass.ContextId value) {
-        if (contextIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextIdsIsMutable();
-          contextIds_.add(index, value);
-          onChanged();
-        } else {
-          contextIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder addContextIds(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdsBuilder_ == null) {
-          ensureContextIdsIsMutable();
-          contextIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          contextIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder addContextIds(
-          int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdsBuilder_ == null) {
-          ensureContextIdsIsMutable();
-          contextIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          contextIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder addAllContextIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ContextId> values) {
-        if (contextIdsBuilder_ == null) {
-          ensureContextIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, contextIds_);
-          onChanged();
-        } else {
-          contextIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder clearContextIds() {
-        if (contextIdsBuilder_ == null) {
-          contextIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          contextIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public Builder removeContextIds(int index) {
-        if (contextIdsBuilder_ == null) {
-          ensureContextIdsIsMutable();
-          contextIds_.remove(index);
-          onChanged();
-        } else {
-          contextIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdsBuilder(
-          int index) {
-        return getContextIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(
-          int index) {
-        if (contextIdsBuilder_ == null) {
-          return contextIds_.get(index);  } else {
-          return contextIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> 
-           getContextIdsOrBuilderList() {
-        if (contextIdsBuilder_ != null) {
-          return contextIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(contextIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder() {
-        return getContextIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ContextId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder(
-          int index) {
-        return getContextIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ContextId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ContextId context_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ContextId.Builder> 
-           getContextIdsBuilderList() {
-        return getContextIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdsFieldBuilder() {
-        if (contextIdsBuilder_ == null) {
-          contextIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  contextIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          contextIds_ = null;
-        }
-        return contextIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ContextIdList)
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ContextIdList)
-    private static final context.ContextOuterClass.ContextIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextIdList();
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.ContextIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<ContextIdList>
-        PARSER = new com.google.protobuf.AbstractParser<ContextIdList>() {
-      @java.lang.Override
-      public ContextIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ContextIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ContextIdList> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ContextIdList> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-  }
+        public static context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  public interface ContextListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ContextList)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Context> 
-        getContextsList();
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    context.ContextOuterClass.Context getContexts(int index);
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    int getContextsCount();
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
-        getContextsOrBuilderList();
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ContextList}
-   */
-  public static final class ContextList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ContextList)
-      ContextListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ContextList.newBuilder() to construct.
-    private ContextList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ContextList() {
-      contexts_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ContextList();
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ContextList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              contexts_.add(
-                  input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          contexts_ = java.util.Collections.unmodifiableList(contexts_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Timestamp prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static final int CONTEXTS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Context> contexts_;
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Context> getContextsList() {
-      return contexts_;
-    }
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
-        getContextsOrBuilderList() {
-      return contexts_;
-    }
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    @java.lang.Override
-    public int getContextsCount() {
-      return contexts_.size();
-    }
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Context getContexts(int index) {
-      return contexts_.get(index);
-    }
-    /**
-     * <code>repeated .context.Context contexts = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
-        int index) {
-      return contexts_.get(index);
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * Protobuf type {@code context.Timestamp}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Timestamp)
+        context.ContextOuterClass.TimestampOrBuilder {
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < contexts_.size(); i++) {
-        output.writeMessage(1, contexts_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < contexts_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, contexts_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ContextList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;
-
-      if (!getContextsList()
-          .equals(other.getContextsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            // Construct using context.ContextOuterClass.Timestamp.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getContextsCount() > 0) {
-        hash = (37 * hash) + CONTEXTS_FIELD_NUMBER;
-        hash = (53 * hash) + getContextsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    public static context.ContextOuterClass.ContextList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                timestamp_ = 0D;
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ContextList 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
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ContextList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ContextList)
-        context.ContextOuterClass.ContextListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ContextList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getContextsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextsBuilder_ == null) {
-          contexts_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          contextsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ContextList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextList build() {
-        context.ContextOuterClass.ContextList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextList buildPartial() {
-        context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
-        int from_bitField0_ = bitField0_;
-        if (contextsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            contexts_ = java.util.Collections.unmodifiableList(contexts_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.contexts_ = contexts_;
-        } else {
-          result.contexts_ = contextsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ContextList) {
-          return mergeFrom((context.ContextOuterClass.ContextList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ContextList other) {
-        if (other == context.ContextOuterClass.ContextList.getDefaultInstance()) return this;
-        if (contextsBuilder_ == null) {
-          if (!other.contexts_.isEmpty()) {
-            if (contexts_.isEmpty()) {
-              contexts_ = other.contexts_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureContextsIsMutable();
-              contexts_.addAll(other.contexts_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.contexts_.isEmpty()) {
-            if (contextsBuilder_.isEmpty()) {
-              contextsBuilder_.dispose();
-              contextsBuilder_ = null;
-              contexts_ = other.contexts_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              contextsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getContextsFieldBuilder() : null;
-            } else {
-              contextsBuilder_.addAllMessages(other.contexts_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ContextList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ContextList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Context> contexts_ =
-        java.util.Collections.emptyList();
-      private void ensureContextsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>(contexts_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> contextsBuilder_;
-
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Context> getContextsList() {
-        if (contextsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(contexts_);
-        } else {
-          return contextsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public int getContextsCount() {
-        if (contextsBuilder_ == null) {
-          return contexts_.size();
-        } else {
-          return contextsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public context.ContextOuterClass.Context getContexts(int index) {
-        if (contextsBuilder_ == null) {
-          return contexts_.get(index);
-        } else {
-          return contextsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder setContexts(
-          int index, context.ContextOuterClass.Context value) {
-        if (contextsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextsIsMutable();
-          contexts_.set(index, value);
-          onChanged();
-        } else {
-          contextsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder setContexts(
-          int index, context.ContextOuterClass.Context.Builder builderForValue) {
-        if (contextsBuilder_ == null) {
-          ensureContextsIsMutable();
-          contexts_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          contextsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder addContexts(context.ContextOuterClass.Context value) {
-        if (contextsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextsIsMutable();
-          contexts_.add(value);
-          onChanged();
-        } else {
-          contextsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder addContexts(
-          int index, context.ContextOuterClass.Context value) {
-        if (contextsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureContextsIsMutable();
-          contexts_.add(index, value);
-          onChanged();
-        } else {
-          contextsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder addContexts(
-          context.ContextOuterClass.Context.Builder builderForValue) {
-        if (contextsBuilder_ == null) {
-          ensureContextsIsMutable();
-          contexts_.add(builderForValue.build());
-          onChanged();
-        } else {
-          contextsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder addContexts(
-          int index, context.ContextOuterClass.Context.Builder builderForValue) {
-        if (contextsBuilder_ == null) {
-          ensureContextsIsMutable();
-          contexts_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          contextsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder addAllContexts(
-          java.lang.Iterable<? extends context.ContextOuterClass.Context> values) {
-        if (contextsBuilder_ == null) {
-          ensureContextsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, contexts_);
-          onChanged();
-        } else {
-          contextsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder clearContexts() {
-        if (contextsBuilder_ == null) {
-          contexts_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          contextsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public Builder removeContexts(int index) {
-        if (contextsBuilder_ == null) {
-          ensureContextsIsMutable();
-          contexts_.remove(index);
-          onChanged();
-        } else {
-          contextsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public context.ContextOuterClass.Context.Builder getContextsBuilder(
-          int index) {
-        return getContextsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(
-          int index) {
-        if (contextsBuilder_ == null) {
-          return contexts_.get(index);  } else {
-          return contextsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> 
-           getContextsOrBuilderList() {
-        if (contextsBuilder_ != null) {
-          return contextsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(contexts_);
-        }
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public context.ContextOuterClass.Context.Builder addContextsBuilder() {
-        return getContextsFieldBuilder().addBuilder(
-            context.ContextOuterClass.Context.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public context.ContextOuterClass.Context.Builder addContextsBuilder(
-          int index) {
-        return getContextsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Context.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Context contexts = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Context.Builder> 
-           getContextsBuilderList() {
-        return getContextsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> 
-          getContextsFieldBuilder() {
-        if (contextsBuilder_ == null) {
-          contextsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder>(
-                  contexts_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          contexts_ = null;
-        }
-        return contextsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ContextList)
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
+                return context.ContextOuterClass.Timestamp.getDefaultInstance();
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ContextList)
-    private static final context.ContextOuterClass.ContextList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextList();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Timestamp build() {
+                context.ContextOuterClass.Timestamp result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static context.ContextOuterClass.ContextList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Timestamp buildPartial() {
+                context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    private static final com.google.protobuf.Parser<ContextList>
-        PARSER = new com.google.protobuf.AbstractParser<ContextList>() {
-      @java.lang.Override
-      public ContextList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ContextList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ContextList> parser() {
-      return PARSER;
-    }
+            private void buildPartial0(context.ContextOuterClass.Timestamp result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.timestamp_ = timestamp_;
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ContextList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Timestamp) {
+                    return mergeFrom((context.ContextOuterClass.Timestamp) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Timestamp other) {
+                if (other == context.ContextOuterClass.Timestamp.getDefaultInstance())
+                    return this;
+                if (other.getTimestamp() != 0D) {
+                    setTimestamp(other.getTimestamp());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-  }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-  public interface ContextEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ContextEvent)
-      com.google.protobuf.MessageOrBuilder {
+            @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:
+                                {
+                                    timestamp_ = input.readDouble();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 9
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+            private int bitField0_;
 
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.ContextEvent}
-   */
-  public static final class ContextEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ContextEvent)
-      ContextEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ContextEvent.newBuilder() to construct.
-    private ContextEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ContextEvent() {
-    }
+            private double timestamp_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ContextEvent();
-    }
+            /**
+             * <code>double timestamp = 1;</code>
+             * @return The timestamp.
+             */
+            @java.lang.Override
+            public double getTimestamp() {
+                return timestamp_;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ContextEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
-    }
+            /**
+             * <code>double timestamp = 1;</code>
+             * @param value The timestamp to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTimestamp(double value) {
+                timestamp_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
-    }
+            /**
+             * <code>double timestamp = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                timestamp_ = 0D;
+                onChanged();
+                return this;
+            }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Timestamp)
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        // @@protoc_insertion_point(class_scope:context.Timestamp)
+        private static final context.ContextOuterClass.Timestamp DEFAULT_INSTANCE;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Timestamp();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (contextId_ != null) {
-        output.writeMessage(2, getContextId());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Timestamp getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getContextId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private static final com.google.protobuf.Parser<Timestamp> PARSER = new com.google.protobuf.AbstractParser<Timestamp>() {
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ContextEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ContextEvent other = (context.ContextOuterClass.ContextEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public Timestamp 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();
+            }
+        };
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static com.google.protobuf.Parser<Timestamp> parser() {
+            return PARSER;
+        }
 
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ContextEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Timestamp> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ContextEvent 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
+        public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ContextEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ContextEvent)
-        context.ContextOuterClass.ContextEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.ContextEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextEvent build() {
-        context.ContextOuterClass.ContextEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ContextEvent buildPartial() {
-        context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ContextEvent) {
-          return mergeFrom((context.ContextOuterClass.ContextEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ContextEvent other) {
-        if (other == context.ContextOuterClass.ContextEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ContextEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ContextEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ContextEvent)
-    }
+    public interface EventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Event)
+    com.google.protobuf.MessageOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:context.ContextEvent)
-    private static final context.ContextOuterClass.ContextEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ContextEvent();
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
 
-    public static context.ContextOuterClass.ContextEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
 
-    private static final com.google.protobuf.Parser<ContextEvent>
-        PARSER = new com.google.protobuf.AbstractParser<ContextEvent>() {
-      @java.lang.Override
-      public ContextEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ContextEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ContextEvent> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ContextEvent> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.EventTypeEnum event_type = 2;</code>
+         * @return The enum numeric value on the wire for eventType.
+         */
+        int getEventTypeValue();
 
-    @java.lang.Override
-    public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+        /**
+         * <code>.context.EventTypeEnum event_type = 2;</code>
+         * @return The eventType.
+         */
+        context.ContextOuterClass.EventTypeEnum getEventType();
     }
 
-  }
-
-  public interface TopologyIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyId)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
     /**
-     * <code>.context.ContextId context_id = 1;</code>
+     * Protobuf type {@code context.Event}
      */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+    public static final class Event extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Event)
+    EventOrBuilder {
 
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     * @return Whether the topologyUuid field is set.
-     */
-    boolean hasTopologyUuid();
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     * @return The topologyUuid.
-     */
-    context.ContextOuterClass.Uuid getTopologyUuid();
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Topology ------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.TopologyId}
-   */
-  public static final class TopologyId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyId)
-      TopologyIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TopologyId.newBuilder() to construct.
-    private TopologyId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TopologyId() {
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TopologyId();
-    }
+        // Use Event.newBuilder() to construct.
+        private Event(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TopologyId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (topologyUuid_ != null) {
-                subBuilder = topologyUuid_.toBuilder();
-              }
-              topologyUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyUuid_);
-                topologyUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
-    }
+        private Event() {
+            eventType_ = 0;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Event();
+        }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Event_descriptor;
+        }
 
-    public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Uuid topologyUuid_;
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     * @return Whether the topologyUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasTopologyUuid() {
-      return topologyUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     * @return The topologyUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getTopologyUuid() {
-      return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
-    }
-    /**
-     * <code>.context.Uuid topology_uuid = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
-      return getTopologyUuid();
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.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;
+        public static final int TIMESTAMP_FIELD_NUMBER = 1;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private context.ContextOuterClass.Timestamp timestamp_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (topologyUuid_ != null) {
-        output.writeMessage(2, getTopologyUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (topologyUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getTopologyUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TopologyId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TopologyId other = (context.ContextOuterClass.TopologyId) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (hasTopologyUuid() != other.hasTopologyUuid()) return false;
-      if (hasTopologyUuid()) {
-        if (!getTopologyUuid()
-            .equals(other.getTopologyUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      if (hasTopologyUuid()) {
-        hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final int EVENT_TYPE_FIELD_NUMBER = 2;
 
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        private int eventType_ = 0;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>.context.EventTypeEnum event_type = 2;</code>
+         * @return The enum numeric value on the wire for eventType.
+         */
+        @java.lang.Override
+        public int getEventTypeValue() {
+            return eventType_;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Topology ------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.TopologyId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyId)
-        context.ContextOuterClass.TopologyIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TopologyId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        if (topologyUuidBuilder_ == null) {
-          topologyUuid_ = null;
-        } else {
-          topologyUuid_ = null;
-          topologyUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyId build() {
-        context.ContextOuterClass.TopologyId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyId buildPartial() {
-        context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        if (topologyUuidBuilder_ == null) {
-          result.topologyUuid_ = topologyUuid_;
-        } else {
-          result.topologyUuid_ = topologyUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyId) {
-          return mergeFrom((context.ContextOuterClass.TopologyId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TopologyId other) {
-        if (other == context.ContextOuterClass.TopologyId.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (other.hasTopologyUuid()) {
-          mergeTopologyUuid(other.getTopologyUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TopologyId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Uuid topologyUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> topologyUuidBuilder_;
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       * @return Whether the topologyUuid field is set.
-       */
-      public boolean hasTopologyUuid() {
-        return topologyUuidBuilder_ != null || topologyUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       * @return The topologyUuid.
-       */
-      public context.ContextOuterClass.Uuid getTopologyUuid() {
-        if (topologyUuidBuilder_ == null) {
-          return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
-        } else {
-          return topologyUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public Builder setTopologyUuid(context.ContextOuterClass.Uuid value) {
-        if (topologyUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          topologyUuid_ = value;
-          onChanged();
-        } else {
-          topologyUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public Builder setTopologyUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (topologyUuidBuilder_ == null) {
-          topologyUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
-        if (topologyUuidBuilder_ == null) {
-          if (topologyUuid_ != null) {
-            topologyUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(topologyUuid_).mergeFrom(value).buildPartial();
-          } else {
-            topologyUuid_ = value;
-          }
-          onChanged();
-        } else {
-          topologyUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public Builder clearTopologyUuid() {
-        if (topologyUuidBuilder_ == null) {
-          topologyUuid_ = null;
-          onChanged();
-        } else {
-          topologyUuid_ = null;
-          topologyUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
-        
-        onChanged();
-        return getTopologyUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
-        if (topologyUuidBuilder_ != null) {
-          return topologyUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return topologyUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid topology_uuid = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getTopologyUuidFieldBuilder() {
-        if (topologyUuidBuilder_ == null) {
-          topologyUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getTopologyUuid(),
-                  getParentForChildren(),
-                  isClean());
-          topologyUuid_ = null;
-        }
-        return topologyUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TopologyId)
-    }
+        /**
+         * <code>.context.EventTypeEnum event_type = 2;</code>
+         * @return The eventType.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventTypeEnum getEventType() {
+            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+            return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyId)
-    private static final context.ContextOuterClass.TopologyId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyId();
-    }
+        private byte memoizedIsInitialized = -1;
 
-    public static context.ContextOuterClass.TopologyId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    private static final com.google.protobuf.Parser<TopologyId>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyId>() {
-      @java.lang.Override
-      public TopologyId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TopologyId> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (timestamp_ != null) {
+                output.writeMessage(1, getTimestamp());
+            }
+            if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
+                output.writeEnum(2, eventType_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TopologyId> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTimestamp());
+            }
+            if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Event)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Event other = (context.ContextOuterClass.Event) obj;
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    return false;
+            }
+            if (eventType_ != other.eventType_)
+                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 (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + eventType_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-  public interface TopologyOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Topology)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Event parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    boolean hasTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    context.ContextOuterClass.TopologyId getTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+        public static context.ContextOuterClass.Event parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.DeviceId> 
-        getDeviceIdsList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    context.ContextOuterClass.DeviceId getDeviceIds(int index);
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    int getDeviceIdsCount();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.LinkId> 
-        getLinkIdsList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    context.ContextOuterClass.LinkId getLinkIds(int index);
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    int getLinkIdsCount();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.Topology}
-   */
-  public static final class Topology extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Topology)
-      TopologyOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Topology.newBuilder() to construct.
-    private Topology(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Topology() {
-      name_ = "";
-      deviceIds_ = java.util.Collections.emptyList();
-      linkIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Event parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Topology();
-    }
+        public static context.ContextOuterClass.Event parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Topology(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              linkIds_.add(
-                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Topology_descriptor;
-    }
+        public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
-    }
+        public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.TopologyId topologyId_;
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    @java.lang.Override
-    public boolean hasTopologyId() {
-      return topologyId_ != null;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyId() {
-      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-      return getTopologyId();
-    }
+        public static context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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 context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int DEVICE_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getDeviceIdsCount() {
-      return deviceIds_.size();
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-      return deviceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index) {
-      return deviceIds_.get(index);
-    }
+        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static final int LINK_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public int getLinkIdsCount() {
-      return linkIds_.size();
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkIds(int index) {
-      return linkIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index) {
-      return linkIds_.get(index);
-    }
+        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (topologyId_ != null) {
-        output.writeMessage(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        output.writeMessage(3, deviceIds_.get(i));
-      }
-      for (int i = 0; i < linkIds_.size(); i++) {
-        output.writeMessage(4, linkIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Event prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (topologyId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, deviceIds_.get(i));
-      }
-      for (int i = 0; i < linkIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, linkIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Topology)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Topology other = (context.ContextOuterClass.Topology) obj;
-
-      if (hasTopologyId() != other.hasTopologyId()) return false;
-      if (hasTopologyId()) {
-        if (!getTopologyId()
-            .equals(other.getTopologyId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getDeviceIdsList()
-          .equals(other.getDeviceIdsList())) return false;
-      if (!getLinkIdsList()
-          .equals(other.getLinkIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasTopologyId()) {
-        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (getDeviceIdsCount() > 0) {
-        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceIdsList().hashCode();
-      }
-      if (getLinkIdsCount() > 0) {
-        hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * Protobuf type {@code context.Event}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Event)
+        context.ContextOuterClass.EventOrBuilder {
 
-    public static context.ContextOuterClass.Topology parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Topology parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Topology parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Event_descriptor;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Topology 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 com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Topology}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Topology)
-        context.ContextOuterClass.TopologyOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Topology_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Topology.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceIdsFieldBuilder();
-          getLinkIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Topology_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Topology getDefaultInstanceForType() {
-        return context.ContextOuterClass.Topology.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Topology build() {
-        context.ContextOuterClass.Topology result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Topology buildPartial() {
-        context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
-        int from_bitField0_ = bitField0_;
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (deviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        if (linkIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.linkIds_ = linkIds_;
-        } else {
-          result.linkIds_ = linkIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Topology) {
-          return mergeFrom((context.ContextOuterClass.Topology)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Topology other) {
-        if (other == context.ContextOuterClass.Topology.getDefaultInstance()) return this;
-        if (other.hasTopologyId()) {
-          mergeTopologyId(other.getTopologyId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (deviceIdsBuilder_ == null) {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIds_.isEmpty()) {
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDeviceIdsIsMutable();
-              deviceIds_.addAll(other.deviceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIdsBuilder_.isEmpty()) {
-              deviceIdsBuilder_.dispose();
-              deviceIdsBuilder_ = null;
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              deviceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDeviceIdsFieldBuilder() : null;
-            } else {
-              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
+            // Construct using context.ContextOuterClass.Event.newBuilder()
+            private Builder() {
             }
-          }
-        }
-        if (linkIdsBuilder_ == null) {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIds_.isEmpty()) {
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureLinkIdsIsMutable();
-              linkIds_.addAll(other.linkIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIdsBuilder_.isEmpty()) {
-              linkIdsBuilder_.dispose();
-              linkIdsBuilder_ = null;
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              linkIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkIdsFieldBuilder() : null;
-            } else {
-              linkIdsBuilder_.addAllMessages(other.linkIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Topology parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Topology) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.TopologyId topologyId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return Whether the topologyId field is set.
-       */
-      public boolean hasTopologyId() {
-        return topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return The topologyId.
-       */
-      public context.ContextOuterClass.TopologyId getTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        } else {
-          return topologyIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          topologyId_ = value;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
-        } else {
-          return topologyId_ == null ?
-              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdFieldBuilder() {
-        if (topologyIdBuilder_ == null) {
-          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  getTopologyId(),
-                  getParentForChildren(),
-                  isClean());
-          topologyId_ = null;
-        }
-        return topologyIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-        if (deviceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        } else {
-          return deviceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public int getDeviceIdsCount() {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.size();
-        } else {
-          return deviceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);
-        } else {
-          return deviceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder addDeviceIds(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder addAllDeviceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, deviceIds_);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder clearDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public Builder removeDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.remove(index);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-          int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);  } else {
-          return deviceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-           getDeviceIdsOrBuilderList() {
-        if (deviceIdsBuilder_ != null) {
-          return deviceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
-           getDeviceIdsBuilderList() {
-        return getDeviceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdsFieldBuilder() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  deviceIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceIds_ = null;
-        }
-        return deviceIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
-
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-        if (linkIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        } else {
-          return linkIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public int getLinkIdsCount() {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.size();
-        } else {
-          return linkIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId getLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);
-        } else {
-          return linkIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addAllLinkIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, linkIds_);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder clearLinkIds() {
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder removeLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.remove(index);
-          onChanged();
-        } else {
-          linkIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-          int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);  } else {
-          return linkIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-           getLinkIdsOrBuilderList() {
-        if (linkIdsBuilder_ != null) {
-          return linkIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
-        return getLinkIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId.Builder> 
-           getLinkIdsBuilderList() {
-        return getLinkIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdsFieldBuilder() {
-        if (linkIdsBuilder_ == null) {
-          linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  linkIds_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          linkIds_ = null;
-        }
-        return linkIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Topology)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.Topology)
-    private static final context.ContextOuterClass.Topology DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Topology();
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    public static context.ContextOuterClass.Topology getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                eventType_ = 0;
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<Topology>
-        PARSER = new com.google.protobuf.AbstractParser<Topology>() {
-      @java.lang.Override
-      public Topology parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Topology(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Topology> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Event_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Topology> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Event getDefaultInstanceForType() {
+                return context.ContextOuterClass.Event.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Topology getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Event build() {
+                context.ContextOuterClass.Event result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-  }
+            @java.lang.Override
+            public context.ContextOuterClass.Event buildPartial() {
+                context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-  public interface TopologyDetailsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyDetails)
-      com.google.protobuf.MessageOrBuilder {
+            private void buildPartial0(context.ContextOuterClass.Event result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.eventType_ = eventType_;
+                }
+            }
 
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    boolean hasTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    context.ContextOuterClass.TopologyId getTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Event) {
+                    return mergeFrom((context.ContextOuterClass.Event) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            public Builder mergeFrom(context.ContextOuterClass.Event other) {
+                if (other == context.ContextOuterClass.Event.getDefaultInstance())
+                    return this;
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                if (other.eventType_ != 0) {
+                    setEventTypeValue(other.getEventTypeValue());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.Device> 
-        getDevicesList();
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    context.ContextOuterClass.Device getDevices(int index);
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    int getDevicesCount();
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-        getDevicesOrBuilderList();
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-        int index);
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.Link> 
-        getLinksList();
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    context.ContextOuterClass.Link getLinks(int index);
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    int getLinksCount();
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList();
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.TopologyDetails}
-   */
-  public static final class TopologyDetails extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyDetails)
-      TopologyDetailsOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TopologyDetails.newBuilder() to construct.
-    private TopologyDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TopologyDetails() {
-      name_ = "";
-      devices_ = java.util.Collections.emptyList();
-      links_ = java.util.Collections.emptyList();
-    }
+            @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(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    eventType_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TopologyDetails();
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TopologyDetails(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              devices_.add(
-                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              links_.add(
-                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          devices_ = java.util.Collections.unmodifiableList(devices_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          links_ = java.util.Collections.unmodifiableList(links_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
-    }
+            private context.ContextOuterClass.Timestamp timestamp_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
 
-    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.TopologyId topologyId_;
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    @java.lang.Override
-    public boolean hasTopologyId() {
-      return topologyId_ != null;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyId() {
-      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-      return getTopologyId();
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
 
-    public static final int DEVICES_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.Device> devices_;
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
-      return devices_;
-    }
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-        getDevicesOrBuilderList() {
-      return devices_;
-    }
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    @java.lang.Override
-    public int getDevicesCount() {
-      return devices_.size();
-    }
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Device getDevices(int index) {
-      return devices_.get(index);
-    }
-    /**
-     * <code>repeated .context.Device devices = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-        int index) {
-      return devices_.get(index);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static final int LINKS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.Link> links_;
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-      return links_;
-    }
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList() {
-      return links_;
-    }
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    @java.lang.Override
-    public int getLinksCount() {
-      return links_.size();
-    }
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Link getLinks(int index) {
-      return links_.get(index);
-    }
-    /**
-     * <code>repeated .context.Link links = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-        int index) {
-      return links_.get(index);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (topologyId_ != null) {
-        output.writeMessage(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < devices_.size(); i++) {
-        output.writeMessage(3, devices_.get(i));
-      }
-      for (int i = 0; i < links_.size(); i++) {
-        output.writeMessage(4, links_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (topologyId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTopologyId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < devices_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, devices_.get(i));
-      }
-      for (int i = 0; i < links_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, links_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TopologyDetails)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TopologyDetails other = (context.ContextOuterClass.TopologyDetails) obj;
-
-      if (hasTopologyId() != other.hasTopologyId()) return false;
-      if (hasTopologyId()) {
-        if (!getTopologyId()
-            .equals(other.getTopologyId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getDevicesList()
-          .equals(other.getDevicesList())) return false;
-      if (!getLinksList()
-          .equals(other.getLinksList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasTopologyId()) {
-        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (getDevicesCount() > 0) {
-        hash = (37 * hash) + DEVICES_FIELD_NUMBER;
-        hash = (53 * hash) + getDevicesList().hashCode();
-      }
-      if (getLinksCount() > 0) {
-        hash = (37 * hash) + LINKS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinksList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private int eventType_ = 0;
 
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyDetails parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.EventTypeEnum event_type = 2;</code>
+             * @return The enum numeric value on the wire for eventType.
+             */
+            @java.lang.Override
+            public int getEventTypeValue() {
+                return eventType_;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyDetails prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.EventTypeEnum event_type = 2;</code>
+             * @param value The enum numeric value on the wire for eventType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEventTypeValue(int value) {
+                eventType_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.TopologyDetails}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyDetails)
-        context.ContextOuterClass.TopologyDetailsOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDevicesFieldBuilder();
-          getLinksFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          devicesBuilder_.clear();
-        }
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          linksBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyDetails.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails build() {
-        context.ContextOuterClass.TopologyDetails result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyDetails buildPartial() {
-        context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
-        int from_bitField0_ = bitField0_;
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (devicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            devices_ = java.util.Collections.unmodifiableList(devices_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.devices_ = devices_;
-        } else {
-          result.devices_ = devicesBuilder_.build();
-        }
-        if (linksBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            links_ = java.util.Collections.unmodifiableList(links_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.links_ = links_;
-        } else {
-          result.links_ = linksBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyDetails) {
-          return mergeFrom((context.ContextOuterClass.TopologyDetails)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TopologyDetails other) {
-        if (other == context.ContextOuterClass.TopologyDetails.getDefaultInstance()) return this;
-        if (other.hasTopologyId()) {
-          mergeTopologyId(other.getTopologyId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (devicesBuilder_ == null) {
-          if (!other.devices_.isEmpty()) {
-            if (devices_.isEmpty()) {
-              devices_ = other.devices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDevicesIsMutable();
-              devices_.addAll(other.devices_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.devices_.isEmpty()) {
-            if (devicesBuilder_.isEmpty()) {
-              devicesBuilder_.dispose();
-              devicesBuilder_ = null;
-              devices_ = other.devices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              devicesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDevicesFieldBuilder() : null;
-            } else {
-              devicesBuilder_.addAllMessages(other.devices_);
+            /**
+             * <code>.context.EventTypeEnum event_type = 2;</code>
+             * @return The eventType.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.EventTypeEnum getEventType() {
+                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
+                return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.context.EventTypeEnum event_type = 2;</code>
+             * @param value The eventType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEventType(context.ContextOuterClass.EventTypeEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000002;
+                eventType_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EventTypeEnum event_type = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEventType() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                eventType_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
             }
-          }
+            // @@protoc_insertion_point(builder_scope:context.Event)
         }
-        if (linksBuilder_ == null) {
-          if (!other.links_.isEmpty()) {
-            if (links_.isEmpty()) {
-              links_ = other.links_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureLinksIsMutable();
-              links_.addAll(other.links_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.links_.isEmpty()) {
-            if (linksBuilder_.isEmpty()) {
-              linksBuilder_.dispose();
-              linksBuilder_ = null;
-              links_ = other.links_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              linksBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinksFieldBuilder() : null;
-            } else {
-              linksBuilder_.addAllMessages(other.links_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TopologyDetails parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyDetails) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.TopologyId topologyId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return Whether the topologyId field is set.
-       */
-      public boolean hasTopologyId() {
-        return topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return The topologyId.
-       */
-      public context.ContextOuterClass.TopologyId getTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        } else {
-          return topologyIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          topologyId_ = value;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
-        } else {
-          return topologyId_ == null ?
-              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdFieldBuilder() {
-        if (topologyIdBuilder_ == null) {
-          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  getTopologyId(),
-                  getParentForChildren(),
-                  isClean());
-          topologyId_ = null;
-        }
-        return topologyIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.Device> devices_ =
-        java.util.Collections.emptyList();
-      private void ensureDevicesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;
-
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
-        if (devicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(devices_);
-        } else {
-          return devicesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public int getDevicesCount() {
-        if (devicesBuilder_ == null) {
-          return devices_.size();
-        } else {
-          return devicesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public context.ContextOuterClass.Device getDevices(int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);
-        } else {
-          return devicesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.set(index, value);
-          onChanged();
-        } else {
-          devicesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder addDevices(context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.add(value);
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.add(index, value);
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder addDevices(
-          context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder addAllDevices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, devices_);
-          onChanged();
-        } else {
-          devicesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder clearDevices() {
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          devicesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public Builder removeDevices(int index) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.remove(index);
-          onChanged();
-        } else {
-          devicesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public context.ContextOuterClass.Device.Builder getDevicesBuilder(
-          int index) {
-        return getDevicesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-          int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);  } else {
-          return devicesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-           getDevicesOrBuilderList() {
-        if (devicesBuilder_ != null) {
-          return devicesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(devices_);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
-        return getDevicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Device.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
-          int index) {
-        return getDevicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Device.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Device devices = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Device.Builder> 
-           getDevicesBuilderList() {
-        return getDevicesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> 
-          getDevicesFieldBuilder() {
-        if (devicesBuilder_ == null) {
-          devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(
-                  devices_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          devices_ = null;
-        }
-        return devicesBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.Link> links_ =
-        java.util.Collections.emptyList();
-      private void ensureLinksIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
-
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-        if (linksBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(links_);
-        } else {
-          return linksBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public int getLinksCount() {
-        if (linksBuilder_ == null) {
-          return links_.size();
-        } else {
-          return linksBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public context.ContextOuterClass.Link getLinks(int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);
-        } else {
-          return linksBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.set(index, value);
-          onChanged();
-        } else {
-          linksBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder addLinks(context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.add(value);
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.add(index, value);
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder addLinks(
-          context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder addAllLinks(
-          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, links_);
-          onChanged();
-        } else {
-          linksBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder clearLinks() {
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          linksBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public Builder removeLinks(int index) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.remove(index);
-          onChanged();
-        } else {
-          linksBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public context.ContextOuterClass.Link.Builder getLinksBuilder(
-          int index) {
-        return getLinksFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-          int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);  } else {
-          return linksBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-           getLinksOrBuilderList() {
-        if (linksBuilder_ != null) {
-          return linksBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(links_);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
-        return getLinksFieldBuilder().addBuilder(
-            context.ContextOuterClass.Link.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder(
-          int index) {
-        return getLinksFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Link.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Link links = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Link.Builder> 
-           getLinksBuilderList() {
-        return getLinksFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> 
-          getLinksFieldBuilder() {
-        if (linksBuilder_ == null) {
-          linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(
-                  links_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          links_ = null;
-        }
-        return linksBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TopologyDetails)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyDetails)
-    private static final context.ContextOuterClass.TopologyDetails DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyDetails();
-    }
+        // @@protoc_insertion_point(class_scope:context.Event)
+        private static final context.ContextOuterClass.Event DEFAULT_INSTANCE;
 
-    public static context.ContextOuterClass.TopologyDetails getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Event();
+        }
 
-    private static final com.google.protobuf.Parser<TopologyDetails>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyDetails>() {
-      @java.lang.Override
-      public TopologyDetails parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyDetails(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TopologyDetails> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Event getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TopologyDetails> getParserForType() {
-      return PARSER;
-    }
+        private static final com.google.protobuf.Parser<Event> PARSER = new com.google.protobuf.AbstractParser<Event>() {
 
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Event 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<Event> parser() {
+            return PARSER;
+        }
 
-  public interface TopologyIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public com.google.protobuf.Parser<Event> getParserForType() {
+            return PARSER;
+        }
 
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.TopologyId> 
-        getTopologyIdsList();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    context.ContextOuterClass.TopologyId getTopologyIds(int index);
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    int getTopologyIdsCount();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList();
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.TopologyIdList}
-   */
-  public static final class TopologyIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyIdList)
-      TopologyIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TopologyIdList.newBuilder() to construct.
-    private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TopologyIdList() {
-      topologyIds_ = java.util.Collections.emptyList();
+        @java.lang.Override
+        public context.ContextOuterClass.Event getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TopologyIdList();
-    }
+    public interface ContextIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextId)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TopologyIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              topologyIds_.add(
-                  input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
-    }
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         * @return Whether the contextUuid field is set.
+         */
+        boolean hasContextUuid();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
-    }
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         * @return The contextUuid.
+         */
+        context.ContextOuterClass.Uuid getContextUuid();
 
-    public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-      return topologyIds_;
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-        getTopologyIdsOrBuilderList() {
-      return topologyIds_;
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getTopologyIdsCount() {
-      return topologyIds_.size();
-    }
-    /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-      return topologyIds_.get(index);
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder();
     }
+
     /**
-     * <code>repeated .context.TopologyId topology_ids = 1;</code>
+     * <pre>
+     * ----- Context -------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.ContextId}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-        int index) {
-      return topologyIds_.get(index);
-    }
+    public static final class ContextId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextId)
+    ContextIdOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use ContextId.newBuilder() to construct.
+        private ContextId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < topologyIds_.size(); i++) {
-        output.writeMessage(1, topologyIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        private ContextId() {
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < topologyIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, topologyIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ContextId();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TopologyIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
-
-      if (!getTopologyIdsList()
-          .equals(other.getTopologyIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getTopologyIdsCount() > 0) {
-        hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
+        }
 
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int CONTEXT_UUID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private context.ContextOuterClass.Uuid contextUuid_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.TopologyIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyIdList)
-        context.ContextOuterClass.TopologyIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getTopologyIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          topologyIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList build() {
-        context.ContextOuterClass.TopologyIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyIdList buildPartial() {
-        context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (topologyIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.topologyIds_ = topologyIds_;
-        } else {
-          result.topologyIds_ = topologyIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyIdList) {
-          return mergeFrom((context.ContextOuterClass.TopologyIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TopologyIdList other) {
-        if (other == context.ContextOuterClass.TopologyIdList.getDefaultInstance()) return this;
-        if (topologyIdsBuilder_ == null) {
-          if (!other.topologyIds_.isEmpty()) {
-            if (topologyIds_.isEmpty()) {
-              topologyIds_ = other.topologyIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureTopologyIdsIsMutable();
-              topologyIds_.addAll(other.topologyIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.topologyIds_.isEmpty()) {
-            if (topologyIdsBuilder_.isEmpty()) {
-              topologyIdsBuilder_.dispose();
-              topologyIdsBuilder_ = null;
-              topologyIds_ = other.topologyIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              topologyIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getTopologyIdsFieldBuilder() : null;
-            } else {
-              topologyIdsBuilder_.addAllMessages(other.topologyIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TopologyIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ =
-        java.util.Collections.emptyList();
-      private void ensureTopologyIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
-
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
-        if (topologyIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(topologyIds_);
-        } else {
-          return topologyIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public int getTopologyIdsCount() {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.size();
-        } else {
-          return topologyIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);
-        } else {
-          return topologyIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder setTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId value) {
-        if (topologyIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, value);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder addTopologyIds(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder addTopologyIds(
-          int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder addAllTopologyIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, topologyIds_);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder clearTopologyIds() {
-        if (topologyIdsBuilder_ == null) {
-          topologyIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public Builder removeTopologyIds(int index) {
-        if (topologyIdsBuilder_ == null) {
-          ensureTopologyIdsIsMutable();
-          topologyIds_.remove(index);
-          onChanged();
-        } else {
-          topologyIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(
-          int index) {
-        return getTopologyIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(
-          int index) {
-        if (topologyIdsBuilder_ == null) {
-          return topologyIds_.get(index);  } else {
-          return topologyIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> 
-           getTopologyIdsOrBuilderList() {
-        if (topologyIdsBuilder_ != null) {
-          return topologyIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(topologyIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.TopologyId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(
-          int index) {
-        return getTopologyIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.TopologyId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.TopologyId topology_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.TopologyId.Builder> 
-           getTopologyIdsBuilderList() {
-        return getTopologyIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdsFieldBuilder() {
-        if (topologyIdsBuilder_ == null) {
-          topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  topologyIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          topologyIds_ = null;
-        }
-        return topologyIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TopologyIdList)
-    }
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         * @return Whether the contextUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextUuid() {
+            return contextUuid_ != null;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyIdList)
-    private static final context.ContextOuterClass.TopologyIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyIdList();
-    }
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         * @return The contextUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getContextUuid() {
+            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+        }
 
-    public static context.ContextOuterClass.TopologyIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.Uuid context_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
+            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+        }
 
-    private static final com.google.protobuf.Parser<TopologyIdList>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyIdList>() {
-      @java.lang.Override
-      public TopologyIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TopologyIdList> parser() {
-      return PARSER;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TopologyIdList> getParserForType() {
-      return PARSER;
-    }
+        @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 context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (contextUuid_ != null) {
+                output.writeMessage(1, getContextUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-  }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-  public interface TopologyListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyList)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.ContextId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ContextId other = (context.ContextOuterClass.ContextId) obj;
+            if (hasContextUuid() != other.hasContextUuid())
+                return false;
+            if (hasContextUuid()) {
+                if (!getContextUuid().equals(other.getContextUuid()))
+                    return false;
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Topology> 
-        getTopologiesList();
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    context.ContextOuterClass.Topology getTopologies(int index);
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    int getTopologiesCount();
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-        getTopologiesOrBuilderList();
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.TopologyList}
-   */
-  public static final class TopologyList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyList)
-      TopologyListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TopologyList.newBuilder() to construct.
-    private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TopologyList() {
-      topologies_ = java.util.Collections.emptyList();
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasContextUuid()) {
+                hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TopologyList();
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TopologyList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              topologies_.add(
-                  input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          topologies_ = java.util.Collections.unmodifiableList(topologies_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int TOPOLOGIES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Topology> topologies_;
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
-      return topologies_;
-    }
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-        getTopologiesOrBuilderList() {
-      return topologies_;
-    }
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    @java.lang.Override
-    public int getTopologiesCount() {
-      return topologies_.size();
-    }
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Topology getTopologies(int index) {
-      return topologies_.get(index);
-    }
-    /**
-     * <code>repeated .context.Topology topologies = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-        int index) {
-      return topologies_.get(index);
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.ContextId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < topologies_.size(); i++) {
-        output.writeMessage(1, topologies_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < topologies_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, topologies_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TopologyList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
-
-      if (!getTopologiesList()
-          .equals(other.getTopologiesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getTopologiesCount() > 0) {
-        hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologiesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.TopologyList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyList)
-        context.ContextOuterClass.TopologyListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TopologyList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getTopologiesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (topologiesBuilder_ == null) {
-          topologies_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          topologiesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyList build() {
-        context.ContextOuterClass.TopologyList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyList buildPartial() {
-        context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
-        int from_bitField0_ = bitField0_;
-        if (topologiesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            topologies_ = java.util.Collections.unmodifiableList(topologies_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.topologies_ = topologies_;
-        } else {
-          result.topologies_ = topologiesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyList) {
-          return mergeFrom((context.ContextOuterClass.TopologyList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TopologyList other) {
-        if (other == context.ContextOuterClass.TopologyList.getDefaultInstance()) return this;
-        if (topologiesBuilder_ == null) {
-          if (!other.topologies_.isEmpty()) {
-            if (topologies_.isEmpty()) {
-              topologies_ = other.topologies_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureTopologiesIsMutable();
-              topologies_.addAll(other.topologies_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.topologies_.isEmpty()) {
-            if (topologiesBuilder_.isEmpty()) {
-              topologiesBuilder_.dispose();
-              topologiesBuilder_ = null;
-              topologies_ = other.topologies_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              topologiesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getTopologiesFieldBuilder() : null;
-            } else {
-              topologiesBuilder_.addAllMessages(other.topologies_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TopologyList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Topology> topologies_ =
-        java.util.Collections.emptyList();
-      private void ensureTopologiesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>(topologies_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> topologiesBuilder_;
-
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
-        if (topologiesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(topologies_);
-        } else {
-          return topologiesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public int getTopologiesCount() {
-        if (topologiesBuilder_ == null) {
-          return topologies_.size();
-        } else {
-          return topologiesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public context.ContextOuterClass.Topology getTopologies(int index) {
-        if (topologiesBuilder_ == null) {
-          return topologies_.get(index);
-        } else {
-          return topologiesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder setTopologies(
-          int index, context.ContextOuterClass.Topology value) {
-        if (topologiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologiesIsMutable();
-          topologies_.set(index, value);
-          onChanged();
-        } else {
-          topologiesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder setTopologies(
-          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologiesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder addTopologies(context.ContextOuterClass.Topology value) {
-        if (topologiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologiesIsMutable();
-          topologies_.add(value);
-          onChanged();
-        } else {
-          topologiesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder addTopologies(
-          int index, context.ContextOuterClass.Topology value) {
-        if (topologiesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureTopologiesIsMutable();
-          topologies_.add(index, value);
-          onChanged();
-        } else {
-          topologiesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder addTopologies(
-          context.ContextOuterClass.Topology.Builder builderForValue) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.add(builderForValue.build());
-          onChanged();
-        } else {
-          topologiesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder addTopologies(
-          int index, context.ContextOuterClass.Topology.Builder builderForValue) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          topologiesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder addAllTopologies(
-          java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, topologies_);
-          onChanged();
-        } else {
-          topologiesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder clearTopologies() {
-        if (topologiesBuilder_ == null) {
-          topologies_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          topologiesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public Builder removeTopologies(int index) {
-        if (topologiesBuilder_ == null) {
-          ensureTopologiesIsMutable();
-          topologies_.remove(index);
-          onChanged();
-        } else {
-          topologiesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public context.ContextOuterClass.Topology.Builder getTopologiesBuilder(
-          int index) {
-        return getTopologiesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(
-          int index) {
-        if (topologiesBuilder_ == null) {
-          return topologies_.get(index);  } else {
-          return topologiesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> 
-           getTopologiesOrBuilderList() {
-        if (topologiesBuilder_ != null) {
-          return topologiesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(topologies_);
-        }
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
-        return getTopologiesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Topology.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(
-          int index) {
-        return getTopologiesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Topology.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Topology topologies = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Topology.Builder> 
-           getTopologiesBuilderList() {
-        return getTopologiesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> 
-          getTopologiesFieldBuilder() {
-        if (topologiesBuilder_ == null) {
-          topologiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder>(
-                  topologies_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          topologies_ = null;
-        }
-        return topologiesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TopologyList)
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyList)
-    private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    public static context.ContextOuterClass.TopologyList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.ContextId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    private static final com.google.protobuf.Parser<TopologyList>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyList>() {
-      @java.lang.Override
-      public TopologyList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TopologyList> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TopologyList> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <pre>
+         * ----- Context -------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.ContextId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextId)
+        context.ContextOuterClass.ContextIdOrBuilder {
 
-  }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
+            }
 
-  public interface TopologyEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
+            }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+            // Construct using context.ContextOuterClass.ContextId.newBuilder()
+            private Builder() {
+            }
 
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return Whether the topologyId field is set.
-     */
-    boolean hasTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return The topologyId.
-     */
-    context.ContextOuterClass.TopologyId getTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.TopologyEvent}
-   */
-  public static final class TopologyEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TopologyEvent)
-      TopologyEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TopologyEvent.newBuilder() to construct.
-    private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TopologyEvent() {
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TopologyEvent();
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextUuid_ = null;
+                if (contextUuidBuilder_ != null) {
+                    contextUuidBuilder_.dispose();
+                    contextUuidBuilder_ = null;
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TopologyEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
+                return context.ContextOuterClass.ContextId.getDefaultInstance();
+            }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.ContextId build() {
+                context.ContextOuterClass.ContextId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.TopologyId topologyId_;
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return Whether the topologyId field is set.
-     */
-    @java.lang.Override
-    public boolean hasTopologyId() {
-      return topologyId_ != null;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     * @return The topologyId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyId() {
-      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-      return getTopologyId();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.ContextId buildPartial() {
+                context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return 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;
+            private void buildPartial0(context.ContextOuterClass.ContextId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ContextId) {
+                    return mergeFrom((context.ContextOuterClass.ContextId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (topologyId_ != null) {
-        output.writeMessage(2, getTopologyId());
-      }
-      unknownFields.writeTo(output);
-    }
+            public Builder mergeFrom(context.ContextOuterClass.ContextId other) {
+                if (other == context.ContextOuterClass.ContextId.getDefaultInstance())
+                    return this;
+                if (other.hasContextUuid()) {
+                    mergeContextUuid(other.getContextUuid());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (topologyId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getTopologyId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TopologyEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasTopologyId() != other.hasTopologyId()) return false;
-      if (hasTopologyId()) {
-        if (!getTopologyId()
-            .equals(other.getTopologyId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      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(getContextUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasTopologyId()) {
-        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private int bitField0_;
 
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TopologyEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            private context.ContextOuterClass.Uuid contextUuid_;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.TopologyEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TopologyEvent)
-        context.ContextOuterClass.TopologyEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent build() {
-        context.ContextOuterClass.TopologyEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TopologyEvent buildPartial() {
-        context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TopologyEvent) {
-          return mergeFrom((context.ContextOuterClass.TopologyEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TopologyEvent other) {
-        if (other == context.ContextOuterClass.TopologyEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasTopologyId()) {
-          mergeTopologyId(other.getTopologyId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TopologyEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TopologyEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.TopologyId topologyId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       * @return Whether the topologyId field is set.
-       */
-      public boolean hasTopologyId() {
-        return topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       * @return The topologyId.
-       */
-      public context.ContextOuterClass.TopologyId getTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        } else {
-          return topologyIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          topologyId_ = value;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
-        } else {
-          return topologyId_ == null ?
-              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdFieldBuilder() {
-        if (topologyIdBuilder_ == null) {
-          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  getTopologyId(),
-                  getParentForChildren(),
-                  isClean());
-          topologyId_ = null;
-        }
-        return topologyIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             * @return Whether the contextUuid field is set.
+             */
+            public boolean hasContextUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    // @@protoc_insertion_point(class_scope:context.TopologyEvent)
-    private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             * @return The contextUuid.
+             */
+            public context.ContextOuterClass.Uuid getContextUuid() {
+                if (contextUuidBuilder_ == null) {
+                    return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+                } else {
+                    return contextUuidBuilder_.getMessage();
+                }
+            }
 
-    public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public Builder setContextUuid(context.ContextOuterClass.Uuid value) {
+                if (contextUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextUuid_ = value;
+                } else {
+                    contextUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<TopologyEvent>
-        PARSER = new com.google.protobuf.AbstractParser<TopologyEvent>() {
-      @java.lang.Override
-      public TopologyEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TopologyEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TopologyEvent> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (contextUuidBuilder_ == null) {
+                    contextUuid_ = builderForValue.build();
+                } else {
+                    contextUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TopologyEvent> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
+                if (contextUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getContextUuidBuilder().mergeFrom(value);
+                    } else {
+                        contextUuid_ = value;
+                    }
+                } else {
+                    contextUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public Builder clearContextUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextUuid_ = null;
+                if (contextUuidBuilder_ != null) {
+                    contextUuidBuilder_.dispose();
+                    contextUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-  }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextUuidFieldBuilder().getBuilder();
+            }
 
-  public interface DeviceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceId)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
+                if (contextUuidBuilder_ != null) {
+                    return contextUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
+                }
+            }
 
-    /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return Whether the deviceUuid field is set.
-     */
-    boolean hasDeviceUuid();
-    /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return The deviceUuid.
-     */
-    context.ContextOuterClass.Uuid getDeviceUuid();
-    /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Device --------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.DeviceId}
-   */
-  public static final class DeviceId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceId)
-      DeviceIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceId.newBuilder() to construct.
-    private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceId() {
-    }
+            /**
+             * <code>.context.Uuid context_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getContextUuidFieldBuilder() {
+                if (contextUuidBuilder_ == null) {
+                    contextUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getContextUuid(), getParentForChildren(), isClean());
+                    contextUuid_ = null;
+                }
+                return contextUuidBuilder_;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceId();
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (deviceUuid_ != null) {
-                subBuilder = deviceUuid_.toBuilder();
-              }
-              deviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceUuid_);
-                deviceUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ContextId)
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
-    }
+        // @@protoc_insertion_point(class_scope:context.ContextId)
+        private static final context.ContextOuterClass.ContextId DEFAULT_INSTANCE;
 
-    public static final int DEVICE_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid deviceUuid_;
-    /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return Whether the deviceUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceUuid() {
-      return deviceUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid device_uuid = 1;</code>
-     * @return The deviceUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getDeviceUuid() {
-      return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextId();
+        }
+
+        public static context.ContextOuterClass.ContextId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ContextId> PARSER = new com.google.protobuf.AbstractParser<ContextId>() {
+
+            @java.lang.Override
+            public ContextId 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<ContextId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ContextId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ContextOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Context)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        context.ContextOuterClass.TopologyId getTopologyIds(int index);
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        int getTopologyIdsCount();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        context.ContextOuterClass.ServiceId getServiceIds(int index);
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        int getServiceIdsCount();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        context.ContextOuterClass.SliceId getSliceIds(int index);
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        int getSliceIdsCount();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index);
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         * @return Whether the controller field is set.
+         */
+        boolean hasController();
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         * @return The controller.
+         */
+        context.ContextOuterClass.TeraFlowController getController();
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         */
+        context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder();
     }
+
     /**
-     * <code>.context.Uuid device_uuid = 1;</code>
+     * Protobuf type {@code context.Context}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-      return getDeviceUuid();
-    }
+    public static final class Context extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Context)
+    ContextOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use Context.newBuilder() to construct.
+        private Context(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (deviceUuid_ != null) {
-        output.writeMessage(1, getDeviceUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+        private Context() {
+            name_ = "";
+            topologyIds_ = java.util.Collections.emptyList();
+            serviceIds_ = java.util.Collections.emptyList();
+            sliceIds_ = java.util.Collections.emptyList();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (deviceUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDeviceUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Context();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) obj;
-
-      if (hasDeviceUuid() != other.hasDeviceUuid()) return false;
-      if (hasDeviceUuid()) {
-        if (!getDeviceUuid()
-            .equals(other.getDeviceUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Context_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDeviceUuid()) {
-        hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
+        }
 
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private context.ContextOuterClass.ContextId contextId_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Device --------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.DeviceId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceId)
-        context.ContextOuterClass.DeviceIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = null;
-        } else {
-          deviceUuid_ = null;
-          deviceUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceId build() {
-        context.ContextOuterClass.DeviceId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceId buildPartial() {
-        context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
-        if (deviceUuidBuilder_ == null) {
-          result.deviceUuid_ = deviceUuid_;
-        } else {
-          result.deviceUuid_ = deviceUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceId) {
-          return mergeFrom((context.ContextOuterClass.DeviceId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceId other) {
-        if (other == context.ContextOuterClass.DeviceId.getDefaultInstance()) return this;
-        if (other.hasDeviceUuid()) {
-          mergeDeviceUuid(other.getDeviceUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid deviceUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       * @return Whether the deviceUuid field is set.
-       */
-      public boolean hasDeviceUuid() {
-        return deviceUuidBuilder_ != null || deviceUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       * @return The deviceUuid.
-       */
-      public context.ContextOuterClass.Uuid getDeviceUuid() {
-        if (deviceUuidBuilder_ == null) {
-          return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
-        } else {
-          return deviceUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
-        if (deviceUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceUuid_ = value;
-          onChanged();
-        } else {
-          deviceUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public Builder setDeviceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
-        if (deviceUuidBuilder_ == null) {
-          if (deviceUuid_ != null) {
-            deviceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(deviceUuid_).mergeFrom(value).buildPartial();
-          } else {
-            deviceUuid_ = value;
-          }
-          onChanged();
-        } else {
-          deviceUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public Builder clearDeviceUuid() {
-        if (deviceUuidBuilder_ == null) {
-          deviceUuid_ = null;
-          onChanged();
-        } else {
-          deviceUuid_ = null;
-          deviceUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
-        
-        onChanged();
-        return getDeviceUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
-        if (deviceUuidBuilder_ != null) {
-          return deviceUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid device_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getDeviceUuidFieldBuilder() {
-        if (deviceUuidBuilder_ == null) {
-          deviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getDeviceUuid(),
-                  getParentForChildren(),
-                  isClean());
-          deviceUuid_ = null;
-        }
-        return deviceUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceId)
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.DeviceId)
-    private static final context.ContextOuterClass.DeviceId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceId();
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    public static context.ContextOuterClass.DeviceId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    private static final com.google.protobuf.Parser<DeviceId>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceId>() {
-      @java.lang.Override
-      public DeviceId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceId> parser() {
-      return PARSER;
-    }
+        public static final int NAME_FIELD_NUMBER = 2;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceId> getParserForType() {
-      return PARSER;
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
 
-  }
+        /**
+         * <code>string name = 2;</code>
+         * @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 interface DeviceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Device)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;
 
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+            return topologyIds_;
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
+            return topologyIds_;
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getTopologyIdsCount() {
+            return topologyIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+            return topologyIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
+            return topologyIds_.get(index);
+        }
+
+        public static final int SERVICE_IDS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
+            return serviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
+            return serviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public int getServiceIdsCount() {
+            return serviceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceIds(int index) {
+            return serviceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
+            return serviceIds_.get(index);
+        }
+
+        public static final int SLICE_IDS_FIELD_NUMBER = 5;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+            return sliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
+            return sliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        @java.lang.Override
+        public int getSliceIdsCount() {
+            return sliceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceIds(int index) {
+            return sliceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
+            return sliceIds_.get(index);
+        }
+
+        public static final int CONTROLLER_FIELD_NUMBER = 6;
+
+        private context.ContextOuterClass.TeraFlowController controller_;
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         * @return Whether the controller field is set.
+         */
+        @java.lang.Override
+        public boolean hasController() {
+            return controller_ != null;
+        }
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         * @return The controller.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TeraFlowController getController() {
+            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+        }
+
+        /**
+         * <code>.context.TeraFlowController controller = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
+            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+        }
+
+        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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            for (int i = 0; i < topologyIds_.size(); i++) {
+                output.writeMessage(3, topologyIds_.get(i));
+            }
+            for (int i = 0; i < serviceIds_.size(); i++) {
+                output.writeMessage(4, serviceIds_.get(i));
+            }
+            for (int i = 0; i < sliceIds_.size(); i++) {
+                output.writeMessage(5, sliceIds_.get(i));
+            }
+            if (controller_ != null) {
+                output.writeMessage(6, getController());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            for (int i = 0; i < topologyIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, topologyIds_.get(i));
+            }
+            for (int i = 0; i < serviceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, serviceIds_.get(i));
+            }
+            for (int i = 0; i < sliceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, sliceIds_.get(i));
+            }
+            if (controller_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController());
+            }
+            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 context.ContextOuterClass.Context)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Context other = (context.ContextOuterClass.Context) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
+                return false;
+            if (!getServiceIdsList().equals(other.getServiceIdsList()))
+                return false;
+            if (!getSliceIdsList().equals(other.getSliceIdsList()))
+                return false;
+            if (hasController() != other.hasController())
+                return false;
+            if (hasController()) {
+                if (!getController().equals(other.getController()))
+                    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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (getTopologyIdsCount() > 0) {
+                hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyIdsList().hashCode();
+            }
+            if (getServiceIdsCount() > 0) {
+                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceIdsList().hashCode();
+            }
+            if (getSliceIdsCount() > 0) {
+                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceIdsList().hashCode();
+            }
+            if (hasController()) {
+                hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
+                hash = (53 * hash) + getController().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Context prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Context}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Context)
+        context.ContextOuterClass.ContextOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Context_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Context.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                name_ = "";
+                if (topologyIdsBuilder_ == null) {
+                    topologyIds_ = java.util.Collections.emptyList();
+                } else {
+                    topologyIds_ = null;
+                    topologyIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = java.util.Collections.emptyList();
+                } else {
+                    serviceIds_ = null;
+                    serviceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = java.util.Collections.emptyList();
+                } else {
+                    sliceIds_ = null;
+                    sliceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000010);
+                controller_ = null;
+                if (controllerBuilder_ != null) {
+                    controllerBuilder_.dispose();
+                    controllerBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Context_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Context getDefaultInstanceForType() {
+                return context.ContextOuterClass.Context.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Context build() {
+                context.ContextOuterClass.Context result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Context buildPartial() {
+                context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) {
+                if (topologyIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.topologyIds_ = topologyIds_;
+                } else {
+                    result.topologyIds_ = topologyIdsBuilder_.build();
+                }
+                if (serviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.serviceIds_ = serviceIds_;
+                } else {
+                    result.serviceIds_ = serviceIdsBuilder_.build();
+                }
+                if (sliceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
+                        sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000010);
+                    }
+                    result.sliceIds_ = sliceIds_;
+                } else {
+                    result.sliceIds_ = sliceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Context result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Context) {
+                    return mergeFrom((context.ContextOuterClass.Context) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Context other) {
+                if (other == context.ContextOuterClass.Context.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (topologyIdsBuilder_ == null) {
+                    if (!other.topologyIds_.isEmpty()) {
+                        if (topologyIds_.isEmpty()) {
+                            topologyIds_ = other.topologyIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureTopologyIdsIsMutable();
+                            topologyIds_.addAll(other.topologyIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.topologyIds_.isEmpty()) {
+                        if (topologyIdsBuilder_.isEmpty()) {
+                            topologyIdsBuilder_.dispose();
+                            topologyIdsBuilder_ = null;
+                            topologyIds_ = other.topologyIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
+                        } else {
+                            topologyIdsBuilder_.addAllMessages(other.topologyIds_);
+                        }
+                    }
+                }
+                if (serviceIdsBuilder_ == null) {
+                    if (!other.serviceIds_.isEmpty()) {
+                        if (serviceIds_.isEmpty()) {
+                            serviceIds_ = other.serviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureServiceIdsIsMutable();
+                            serviceIds_.addAll(other.serviceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.serviceIds_.isEmpty()) {
+                        if (serviceIdsBuilder_.isEmpty()) {
+                            serviceIdsBuilder_.dispose();
+                            serviceIdsBuilder_ = null;
+                            serviceIds_ = other.serviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
+                        } else {
+                            serviceIdsBuilder_.addAllMessages(other.serviceIds_);
+                        }
+                    }
+                }
+                if (sliceIdsBuilder_ == null) {
+                    if (!other.sliceIds_.isEmpty()) {
+                        if (sliceIds_.isEmpty()) {
+                            sliceIds_ = other.sliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                        } else {
+                            ensureSliceIdsIsMutable();
+                            sliceIds_.addAll(other.sliceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceIds_.isEmpty()) {
+                        if (sliceIdsBuilder_.isEmpty()) {
+                            sliceIdsBuilder_.dispose();
+                            sliceIdsBuilder_ = null;
+                            sliceIds_ = other.sliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                            sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
+                        } else {
+                            sliceIdsBuilder_.addAllMessages(other.sliceIds_);
+                        }
+                    }
+                }
+                if (other.hasController()) {
+                    mergeController(other.getController());
+                }
+                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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                    if (topologyIdsBuilder_ == null) {
+                                        ensureTopologyIdsIsMutable();
+                                        topologyIds_.add(m);
+                                    } else {
+                                        topologyIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (serviceIdsBuilder_ == null) {
+                                        ensureServiceIdsIsMutable();
+                                        serviceIds_.add(m);
+                                    } else {
+                                        serviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceIdsBuilder_ == null) {
+                                        ensureSliceIdsIsMutable();
+                                        sliceIds_.add(m);
+                                    } else {
+                                        sliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();
+
+            private void ensureTopologyIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+                if (topologyIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(topologyIds_);
+                } else {
+                    return topologyIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public int getTopologyIdsCount() {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.size();
+                } else {
+                    return topologyIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.get(index);
+                } else {
+                    return topologyIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.set(index, value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(index, value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder addTopologyIds(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder addAllTopologyIds(java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologyIds_);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder clearTopologyIds() {
+                if (topologyIdsBuilder_ == null) {
+                    topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public Builder removeTopologyIds(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.remove(index);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(int index) {
+                return getTopologyIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.get(index);
+                } else {
+                    return topologyIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
+                if (topologyIdsBuilder_ != null) {
+                    return topologyIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(topologyIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
+                return getTopologyIdsFieldBuilder().addBuilder(context.ContextOuterClass.TopologyId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(int index) {
+                return getTopologyIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.TopologyId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.TopologyId.Builder> getTopologyIdsBuilderList() {
+                return getTopologyIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
+                if (topologyIdsBuilder_ == null) {
+                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    topologyIds_ = null;
+                }
+                return topologyIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();
+
+            private void ensureServiceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
+                if (serviceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(serviceIds_);
+                } else {
+                    return serviceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public int getServiceIdsCount() {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.size();
+                } else {
+                    return serviceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId getServiceIds(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.get(index);
+                } else {
+                    return serviceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder addServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder addAllServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceIds_);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder clearServiceIds() {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public Builder removeServiceIds(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.remove(index);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(int index) {
+                return getServiceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.get(index);
+                } else {
+                    return serviceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
+                if (serviceIdsBuilder_ != null) {
+                    return serviceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(serviceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
+                return getServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(int index) {
+                return getServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getServiceIdsBuilderList() {
+                return getServiceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceIds_ = null;
+                }
+                return serviceIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();
+
+            private void ensureSliceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000010) != 0)) {
+                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
+                    bitField0_ |= 0x00000010;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+                if (sliceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceIds_);
+                } else {
+                    return sliceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public int getSliceIdsCount() {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.size();
+                } else {
+                    return sliceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public context.ContextOuterClass.SliceId getSliceIds(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.get(index);
+                } else {
+                    return sliceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder addSliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder addAllSliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceIds_);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder clearSliceIds() {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public Builder removeSliceIds(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.remove(index);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(int index) {
+                return getSliceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.get(index);
+                } else {
+                    return sliceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
+                if (sliceIdsBuilder_ != null) {
+                    return sliceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
+                return getSliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(int index) {
+                return getSliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceIdsBuilderList() {
+                return getSliceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceIds_ = null;
+                }
+                return sliceIdsBuilder_;
+            }
+
+            private context.ContextOuterClass.TeraFlowController controller_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> controllerBuilder_;
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             * @return Whether the controller field is set.
+             */
+            public boolean hasController() {
+                return ((bitField0_ & 0x00000020) != 0);
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             * @return The controller.
+             */
+            public context.ContextOuterClass.TeraFlowController getController() {
+                if (controllerBuilder_ == null) {
+                    return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+                } else {
+                    return controllerBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public Builder setController(context.ContextOuterClass.TeraFlowController value) {
+                if (controllerBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    controller_ = value;
+                } else {
+                    controllerBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
+                if (controllerBuilder_ == null) {
+                    controller_ = builderForValue.build();
+                } else {
+                    controllerBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
+                if (controllerBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) {
+                        getControllerBuilder().mergeFrom(value);
+                    } else {
+                        controller_ = value;
+                    }
+                } else {
+                    controllerBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public Builder clearController() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                controller_ = null;
+                if (controllerBuilder_ != null) {
+                    controllerBuilder_.dispose();
+                    controllerBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return getControllerFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
+                if (controllerBuilder_ != null) {
+                    return controllerBuilder_.getMessageOrBuilder();
+                } else {
+                    return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
+                }
+            }
+
+            /**
+             * <code>.context.TeraFlowController controller = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> getControllerFieldBuilder() {
+                if (controllerBuilder_ == null) {
+                    controllerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder>(getController(), getParentForChildren(), isClean());
+                    controller_ = null;
+                }
+                return controllerBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Context)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Context)
+        private static final context.ContextOuterClass.Context DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Context();
+        }
+
+        public static context.ContextOuterClass.Context getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Context> PARSER = new com.google.protobuf.AbstractParser<Context>() {
+
+            @java.lang.Override
+            public Context 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<Context> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Context> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Context getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ContextIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ContextId> getContextIdsList();
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        context.ContextOuterClass.ContextId getContextIds(int index);
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        int getContextIdsCount();
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ContextIdList}
+     */
+    public static final class ContextIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextIdList)
+    ContextIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ContextIdList.newBuilder() to construct.
+        private ContextIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ContextIdList() {
+            contextIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ContextIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
+        }
+
+        public static final int CONTEXT_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ContextId> contextIds_;
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
+            return contextIds_;
+        }
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList() {
+            return contextIds_;
+        }
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getContextIdsCount() {
+            return contextIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextIds(int index) {
+            return contextIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ContextId context_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index) {
+            return contextIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < contextIds_.size(); i++) {
+                output.writeMessage(1, contextIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < contextIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i));
+            }
+            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 context.ContextOuterClass.ContextIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;
+            if (!getContextIdsList().equals(other.getContextIdsList()))
+                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 (getContextIdsCount() > 0) {
+                hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getContextIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ContextIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ContextIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextIdList)
+        context.ContextOuterClass.ContextIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (contextIdsBuilder_ == null) {
+                    contextIds_ = java.util.Collections.emptyList();
+                } else {
+                    contextIds_ = null;
+                    contextIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ContextIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextIdList build() {
+                context.ContextOuterClass.ContextIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextIdList buildPartial() {
+                context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) {
+                if (contextIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.contextIds_ = contextIds_;
+                } else {
+                    result.contextIds_ = contextIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ContextIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ContextIdList) {
+                    return mergeFrom((context.ContextOuterClass.ContextIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ContextIdList other) {
+                if (other == context.ContextOuterClass.ContextIdList.getDefaultInstance())
+                    return this;
+                if (contextIdsBuilder_ == null) {
+                    if (!other.contextIds_.isEmpty()) {
+                        if (contextIds_.isEmpty()) {
+                            contextIds_ = other.contextIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureContextIdsIsMutable();
+                            contextIds_.addAll(other.contextIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.contextIds_.isEmpty()) {
+                        if (contextIdsBuilder_.isEmpty()) {
+                            contextIdsBuilder_.dispose();
+                            contextIdsBuilder_ = null;
+                            contextIds_ = other.contextIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            contextIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getContextIdsFieldBuilder() : null;
+                        } else {
+                            contextIdsBuilder_.addAllMessages(other.contextIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
+                                    if (contextIdsBuilder_ == null) {
+                                        ensureContextIdsIsMutable();
+                                        contextIds_.add(m);
+                                    } else {
+                                        contextIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ContextId> contextIds_ = java.util.Collections.emptyList();
+
+            private void ensureContextIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>(contextIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
+                if (contextIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(contextIds_);
+                } else {
+                    return contextIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public int getContextIdsCount() {
+                if (contextIdsBuilder_ == null) {
+                    return contextIds_.size();
+                } else {
+                    return contextIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId getContextIds(int index) {
+                if (contextIdsBuilder_ == null) {
+                    return contextIds_.get(index);
+                } else {
+                    return contextIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder setContextIds(int index, context.ContextOuterClass.ContextId value) {
+                if (contextIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextIdsIsMutable();
+                    contextIds_.set(index, value);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder setContextIds(int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdsBuilder_ == null) {
+                    ensureContextIdsIsMutable();
+                    contextIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder addContextIds(context.ContextOuterClass.ContextId value) {
+                if (contextIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextIdsIsMutable();
+                    contextIds_.add(value);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder addContextIds(int index, context.ContextOuterClass.ContextId value) {
+                if (contextIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextIdsIsMutable();
+                    contextIds_.add(index, value);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder addContextIds(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdsBuilder_ == null) {
+                    ensureContextIdsIsMutable();
+                    contextIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder addContextIds(int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdsBuilder_ == null) {
+                    ensureContextIdsIsMutable();
+                    contextIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder addAllContextIds(java.lang.Iterable<? extends context.ContextOuterClass.ContextId> values) {
+                if (contextIdsBuilder_ == null) {
+                    ensureContextIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, contextIds_);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder clearContextIds() {
+                if (contextIdsBuilder_ == null) {
+                    contextIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public Builder removeContextIds(int index) {
+                if (contextIdsBuilder_ == null) {
+                    ensureContextIdsIsMutable();
+                    contextIds_.remove(index);
+                    onChanged();
+                } else {
+                    contextIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdsBuilder(int index) {
+                return getContextIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index) {
+                if (contextIdsBuilder_ == null) {
+                    return contextIds_.get(index);
+                } else {
+                    return contextIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList() {
+                if (contextIdsBuilder_ != null) {
+                    return contextIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(contextIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder() {
+                return getContextIdsFieldBuilder().addBuilder(context.ContextOuterClass.ContextId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder(int index) {
+                return getContextIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ContextId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ContextId context_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ContextId.Builder> getContextIdsBuilderList() {
+                return getContextIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdsFieldBuilder() {
+                if (contextIdsBuilder_ == null) {
+                    contextIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(contextIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    contextIds_ = null;
+                }
+                return contextIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ContextIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ContextIdList)
+        private static final context.ContextOuterClass.ContextIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextIdList();
+        }
+
+        public static context.ContextOuterClass.ContextIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ContextIdList> PARSER = new com.google.protobuf.AbstractParser<ContextIdList>() {
+
+            @java.lang.Override
+            public ContextIdList 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<ContextIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ContextIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ContextListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Context> getContextsList();
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        context.ContextOuterClass.Context getContexts(int index);
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        int getContextsCount();
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList();
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ContextList}
+     */
+    public static final class ContextList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextList)
+    ContextListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ContextList.newBuilder() to construct.
+        private ContextList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ContextList() {
+            contexts_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ContextList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
+        }
+
+        public static final int CONTEXTS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Context> contexts_;
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Context> getContextsList() {
+            return contexts_;
+        }
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList() {
+            return contexts_;
+        }
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        @java.lang.Override
+        public int getContextsCount() {
+            return contexts_.size();
+        }
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Context getContexts(int index) {
+            return contexts_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Context contexts = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index) {
+            return contexts_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < contexts_.size(); i++) {
+                output.writeMessage(1, contexts_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < contexts_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i));
+            }
+            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 context.ContextOuterClass.ContextList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;
+            if (!getContextsList().equals(other.getContextsList()))
+                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 (getContextsCount() > 0) {
+                hash = (37 * hash) + CONTEXTS_FIELD_NUMBER;
+                hash = (53 * hash) + getContextsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ContextList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ContextList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextList)
+        context.ContextOuterClass.ContextListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ContextList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (contextsBuilder_ == null) {
+                    contexts_ = java.util.Collections.emptyList();
+                } else {
+                    contexts_ = null;
+                    contextsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ContextList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextList build() {
+                context.ContextOuterClass.ContextList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextList buildPartial() {
+                context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) {
+                if (contextsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        contexts_ = java.util.Collections.unmodifiableList(contexts_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.contexts_ = contexts_;
+                } else {
+                    result.contexts_ = contextsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ContextList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ContextList) {
+                    return mergeFrom((context.ContextOuterClass.ContextList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ContextList other) {
+                if (other == context.ContextOuterClass.ContextList.getDefaultInstance())
+                    return this;
+                if (contextsBuilder_ == null) {
+                    if (!other.contexts_.isEmpty()) {
+                        if (contexts_.isEmpty()) {
+                            contexts_ = other.contexts_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureContextsIsMutable();
+                            contexts_.addAll(other.contexts_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.contexts_.isEmpty()) {
+                        if (contextsBuilder_.isEmpty()) {
+                            contextsBuilder_.dispose();
+                            contextsBuilder_ = null;
+                            contexts_ = other.contexts_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            contextsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getContextsFieldBuilder() : null;
+                        } else {
+                            contextsBuilder_.addAllMessages(other.contexts_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry);
+                                    if (contextsBuilder_ == null) {
+                                        ensureContextsIsMutable();
+                                        contexts_.add(m);
+                                    } else {
+                                        contextsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Context> contexts_ = java.util.Collections.emptyList();
+
+            private void ensureContextsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>(contexts_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> contextsBuilder_;
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Context> getContextsList() {
+                if (contextsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(contexts_);
+                } else {
+                    return contextsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public int getContextsCount() {
+                if (contextsBuilder_ == null) {
+                    return contexts_.size();
+                } else {
+                    return contextsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public context.ContextOuterClass.Context getContexts(int index) {
+                if (contextsBuilder_ == null) {
+                    return contexts_.get(index);
+                } else {
+                    return contextsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder setContexts(int index, context.ContextOuterClass.Context value) {
+                if (contextsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextsIsMutable();
+                    contexts_.set(index, value);
+                    onChanged();
+                } else {
+                    contextsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder setContexts(int index, context.ContextOuterClass.Context.Builder builderForValue) {
+                if (contextsBuilder_ == null) {
+                    ensureContextsIsMutable();
+                    contexts_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    contextsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder addContexts(context.ContextOuterClass.Context value) {
+                if (contextsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextsIsMutable();
+                    contexts_.add(value);
+                    onChanged();
+                } else {
+                    contextsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder addContexts(int index, context.ContextOuterClass.Context value) {
+                if (contextsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureContextsIsMutable();
+                    contexts_.add(index, value);
+                    onChanged();
+                } else {
+                    contextsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder addContexts(context.ContextOuterClass.Context.Builder builderForValue) {
+                if (contextsBuilder_ == null) {
+                    ensureContextsIsMutable();
+                    contexts_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    contextsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder addContexts(int index, context.ContextOuterClass.Context.Builder builderForValue) {
+                if (contextsBuilder_ == null) {
+                    ensureContextsIsMutable();
+                    contexts_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    contextsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder addAllContexts(java.lang.Iterable<? extends context.ContextOuterClass.Context> values) {
+                if (contextsBuilder_ == null) {
+                    ensureContextsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, contexts_);
+                    onChanged();
+                } else {
+                    contextsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder clearContexts() {
+                if (contextsBuilder_ == null) {
+                    contexts_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    contextsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public Builder removeContexts(int index) {
+                if (contextsBuilder_ == null) {
+                    ensureContextsIsMutable();
+                    contexts_.remove(index);
+                    onChanged();
+                } else {
+                    contextsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public context.ContextOuterClass.Context.Builder getContextsBuilder(int index) {
+                return getContextsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index) {
+                if (contextsBuilder_ == null) {
+                    return contexts_.get(index);
+                } else {
+                    return contextsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList() {
+                if (contextsBuilder_ != null) {
+                    return contextsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(contexts_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public context.ContextOuterClass.Context.Builder addContextsBuilder() {
+                return getContextsFieldBuilder().addBuilder(context.ContextOuterClass.Context.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public context.ContextOuterClass.Context.Builder addContextsBuilder(int index) {
+                return getContextsFieldBuilder().addBuilder(index, context.ContextOuterClass.Context.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Context contexts = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Context.Builder> getContextsBuilderList() {
+                return getContextsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> getContextsFieldBuilder() {
+                if (contextsBuilder_ == null) {
+                    contextsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder>(contexts_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    contexts_ = null;
+                }
+                return contextsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ContextList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ContextList)
+        private static final context.ContextOuterClass.ContextList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextList();
+        }
+
+        public static context.ContextOuterClass.ContextList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ContextList> PARSER = new com.google.protobuf.AbstractParser<ContextList>() {
+
+            @java.lang.Override
+            public ContextList 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<ContextList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ContextList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ContextEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.ContextEvent}
+     */
+    public static final class ContextEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextEvent)
+    ContextEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ContextEvent.newBuilder() to construct.
+        private ContextEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ContextEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ContextEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (contextId_ != null) {
+                output.writeMessage(2, getContextId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId());
+            }
+            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 context.ContextOuterClass.ContextEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ContextEvent other = (context.ContextOuterClass.ContextEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ContextEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ContextEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextEvent)
+        context.ContextOuterClass.ContextEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.ContextEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextEvent build() {
+                context.ContextOuterClass.ContextEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ContextEvent buildPartial() {
+                context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ContextEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ContextEvent) {
+                    return mergeFrom((context.ContextOuterClass.ContextEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ContextEvent other) {
+                if (other == context.ContextOuterClass.ContextEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ContextEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ContextEvent)
+        private static final context.ContextOuterClass.ContextEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextEvent();
+        }
+
+        public static context.ContextOuterClass.ContextEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ContextEvent> PARSER = new com.google.protobuf.AbstractParser<ContextEvent>() {
+
+            @java.lang.Override
+            public ContextEvent 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<ContextEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ContextEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         * @return Whether the topologyUuid field is set.
+         */
+        boolean hasTopologyUuid();
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         * @return The topologyUuid.
+         */
+        context.ContextOuterClass.Uuid getTopologyUuid();
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Topology ------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.TopologyId}
+     */
+    public static final class TopologyId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyId)
+    TopologyIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use TopologyId.newBuilder() to construct.
+        private TopologyId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private TopologyId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TopologyId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.Uuid topologyUuid_;
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         * @return Whether the topologyUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasTopologyUuid() {
+            return topologyUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         * @return The topologyUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getTopologyUuid() {
+            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid topology_uuid = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
+            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+        }
+
+        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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (topologyUuid_ != null) {
+                output.writeMessage(2, getTopologyUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (topologyUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid());
+            }
+            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 context.ContextOuterClass.TopologyId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TopologyId other = (context.ContextOuterClass.TopologyId) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (hasTopologyUuid() != other.hasTopologyUuid())
+                return false;
+            if (hasTopologyUuid()) {
+                if (!getTopologyUuid().equals(other.getTopologyUuid()))
+                    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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            if (hasTopologyUuid()) {
+                hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.TopologyId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Topology ------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.TopologyId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyId)
+        context.ContextOuterClass.TopologyIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TopologyId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                topologyUuid_ = null;
+                if (topologyUuidBuilder_ != null) {
+                    topologyUuidBuilder_.dispose();
+                    topologyUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
+                return context.ContextOuterClass.TopologyId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyId build() {
+                context.ContextOuterClass.TopologyId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyId buildPartial() {
+                context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.TopologyId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TopologyId) {
+                    return mergeFrom((context.ContextOuterClass.TopologyId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.TopologyId other) {
+                if (other == context.ContextOuterClass.TopologyId.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.hasTopologyUuid()) {
+                    mergeTopologyUuid(other.getTopologyUuid());
+                }
+                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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private context.ContextOuterClass.Uuid topologyUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> topologyUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             * @return Whether the topologyUuid field is set.
+             */
+            public boolean hasTopologyUuid() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             * @return The topologyUuid.
+             */
+            public context.ContextOuterClass.Uuid getTopologyUuid() {
+                if (topologyUuidBuilder_ == null) {
+                    return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+                } else {
+                    return topologyUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public Builder setTopologyUuid(context.ContextOuterClass.Uuid value) {
+                if (topologyUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    topologyUuid_ = value;
+                } else {
+                    topologyUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuid_ = builderForValue.build();
+                } else {
+                    topologyUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
+                if (topologyUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getTopologyUuidBuilder().mergeFrom(value);
+                    } else {
+                        topologyUuid_ = value;
+                    }
+                } else {
+                    topologyUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public Builder clearTopologyUuid() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                topologyUuid_ = null;
+                if (topologyUuidBuilder_ != null) {
+                    topologyUuidBuilder_.dispose();
+                    topologyUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getTopologyUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
+                if (topologyUuidBuilder_ != null) {
+                    return topologyUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid topology_uuid = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getTopologyUuidFieldBuilder() {
+                if (topologyUuidBuilder_ == null) {
+                    topologyUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getTopologyUuid(), getParentForChildren(), isClean());
+                    topologyUuid_ = null;
+                }
+                return topologyUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TopologyId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.TopologyId)
+        private static final context.ContextOuterClass.TopologyId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyId();
+        }
+
+        public static context.ContextOuterClass.TopologyId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<TopologyId> PARSER = new com.google.protobuf.AbstractParser<TopologyId>() {
+
+            @java.lang.Override
+            public TopologyId 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<TopologyId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<TopologyId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Topology)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        boolean hasTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        context.ContextOuterClass.TopologyId getTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        context.ContextOuterClass.DeviceId getDeviceIds(int index);
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        int getDeviceIdsCount();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        context.ContextOuterClass.LinkId getLinkIds(int index);
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        int getLinkIdsCount();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.Topology}
+     */
+    public static final class Topology extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Topology)
+    TopologyOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Topology.newBuilder() to construct.
+        private Topology(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Topology() {
+            name_ = "";
+            deviceIds_ = java.util.Collections.emptyList();
+            linkIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Topology();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Topology_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
+        }
+
+        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.TopologyId topologyId_;
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        @java.lang.Override
+        public boolean hasTopologyId() {
+            return topologyId_ != null;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyId() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 DEVICE_IDS_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+            return deviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+            return deviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getDeviceIdsCount() {
+            return deviceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+            return deviceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+            return deviceIds_.get(index);
+        }
+
+        public static final int LINK_IDS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+            return linkIds_;
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+            return linkIds_;
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public int getLinkIdsCount() {
+            return linkIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkIds(int index) {
+            return linkIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+            return linkIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (topologyId_ != null) {
+                output.writeMessage(1, getTopologyId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                output.writeMessage(3, deviceIds_.get(i));
+            }
+            for (int i = 0; i < linkIds_.size(); i++) {
+                output.writeMessage(4, linkIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (topologyId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, deviceIds_.get(i));
+            }
+            for (int i = 0; i < linkIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
+            }
+            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 context.ContextOuterClass.Topology)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Topology other = (context.ContextOuterClass.Topology) obj;
+            if (hasTopologyId() != other.hasTopologyId())
+                return false;
+            if (hasTopologyId()) {
+                if (!getTopologyId().equals(other.getTopologyId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
+                return false;
+            if (!getLinkIdsList().equals(other.getLinkIdsList()))
+                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 (hasTopologyId()) {
+                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (getDeviceIdsCount() > 0) {
+                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceIdsList().hashCode();
+            }
+            if (getLinkIdsCount() > 0) {
+                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Topology prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Topology}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Topology)
+        context.ContextOuterClass.TopologyOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Topology_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Topology.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                name_ = "";
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                } else {
+                    deviceIds_ = null;
+                    deviceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                } else {
+                    linkIds_ = null;
+                    linkIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Topology_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Topology getDefaultInstanceForType() {
+                return context.ContextOuterClass.Topology.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Topology build() {
+                context.ContextOuterClass.Topology result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Topology buildPartial() {
+                context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) {
+                if (deviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.deviceIds_ = deviceIds_;
+                } else {
+                    result.deviceIds_ = deviceIdsBuilder_.build();
+                }
+                if (linkIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.linkIds_ = linkIds_;
+                } else {
+                    result.linkIds_ = linkIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Topology result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Topology) {
+                    return mergeFrom((context.ContextOuterClass.Topology) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Topology other) {
+                if (other == context.ContextOuterClass.Topology.getDefaultInstance())
+                    return this;
+                if (other.hasTopologyId()) {
+                    mergeTopologyId(other.getTopologyId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (deviceIdsBuilder_ == null) {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIds_.isEmpty()) {
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureDeviceIdsIsMutable();
+                            deviceIds_.addAll(other.deviceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIdsBuilder_.isEmpty()) {
+                            deviceIdsBuilder_.dispose();
+                            deviceIdsBuilder_ = null;
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
+                        } else {
+                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
+                        }
+                    }
+                }
+                if (linkIdsBuilder_ == null) {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIds_.isEmpty()) {
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureLinkIdsIsMutable();
+                            linkIds_.addAll(other.linkIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIdsBuilder_.isEmpty()) {
+                            linkIdsBuilder_.dispose();
+                            linkIdsBuilder_ = null;
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
+                        } else {
+                            linkIdsBuilder_.addAllMessages(other.linkIds_);
+                        }
+                    }
+                }
+                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(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.TopologyId topologyId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return Whether the topologyId field is set.
+             */
+            public boolean hasTopologyId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return The topologyId.
+             */
+            public context.ContextOuterClass.TopologyId getTopologyId() {
+                if (topologyIdBuilder_ == null) {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                } else {
+                    return topologyIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    topologyId_ = value;
+                } else {
+                    topologyIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = builderForValue.build();
+                } else {
+                    topologyIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
+                    } else {
+                        topologyId_ = value;
+                    }
+                } else {
+                    topologyIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder clearTopologyId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getTopologyIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+                if (topologyIdBuilder_ != null) {
+                    return topologyIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
+                if (topologyIdBuilder_ == null) {
+                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
+                    topologyId_ = null;
+                }
+                return topologyIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
+
+            private void ensureDeviceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+                if (deviceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                } else {
+                    return deviceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public int getDeviceIdsCount() {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.size();
+                } else {
+                    return deviceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder clearDeviceIds() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public Builder removeDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.remove(index);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+                if (deviceIdsBuilder_ != null) {
+                    return deviceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
+                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
+                return getDeviceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    deviceIds_ = null;
+                }
+                return deviceIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
+
+            private void ensureLinkIdsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+                if (linkIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                } else {
+                    return linkIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public int getLinkIdsCount() {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.size();
+                } else {
+                    return linkIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId getLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder clearLinkIds() {
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder removeLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.remove(index);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+                if (linkIdsBuilder_ != null) {
+                    return linkIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
+                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
+                return getLinkIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
+                if (linkIdsBuilder_ == null) {
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIds_ = null;
+                }
+                return linkIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Topology)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Topology)
+        private static final context.ContextOuterClass.Topology DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Topology();
+        }
+
+        public static context.ContextOuterClass.Topology getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Topology> PARSER = new com.google.protobuf.AbstractParser<Topology>() {
+
+            @java.lang.Override
+            public Topology 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<Topology> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Topology> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Topology getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyDetails)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        boolean hasTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        context.ContextOuterClass.TopologyId getTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.Device> getDevicesList();
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        context.ContextOuterClass.Device getDevices(int index);
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        int getDevicesCount();
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList();
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.Link> getLinksList();
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        context.ContextOuterClass.Link getLinks(int index);
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        int getLinksCount();
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList();
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.TopologyDetails}
+     */
+    public static final class TopologyDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyDetails)
+    TopologyDetailsOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use TopologyDetails.newBuilder() to construct.
+        private TopologyDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private TopologyDetails() {
+            name_ = "";
+            devices_ = java.util.Collections.emptyList();
+            links_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TopologyDetails();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
+        }
+
+        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.TopologyId topologyId_;
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        @java.lang.Override
+        public boolean hasTopologyId() {
+            return topologyId_ != null;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyId() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 DEVICES_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Device> devices_;
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+            return devices_;
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
+            return devices_;
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        @java.lang.Override
+        public int getDevicesCount() {
+            return devices_.size();
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Device getDevices(int index) {
+            return devices_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
+            return devices_.get(index);
+        }
+
+        public static final int LINKS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Link> links_;
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+            return links_;
+        }
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
+            return links_;
+        }
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        @java.lang.Override
+        public int getLinksCount() {
+            return links_.size();
+        }
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Link getLinks(int index) {
+            return links_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Link links = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
+            return links_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (topologyId_ != null) {
+                output.writeMessage(1, getTopologyId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            for (int i = 0; i < devices_.size(); i++) {
+                output.writeMessage(3, devices_.get(i));
+            }
+            for (int i = 0; i < links_.size(); i++) {
+                output.writeMessage(4, links_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (topologyId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            for (int i = 0; i < devices_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, devices_.get(i));
+            }
+            for (int i = 0; i < links_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i));
+            }
+            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 context.ContextOuterClass.TopologyDetails)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TopologyDetails other = (context.ContextOuterClass.TopologyDetails) obj;
+            if (hasTopologyId() != other.hasTopologyId())
+                return false;
+            if (hasTopologyId()) {
+                if (!getTopologyId().equals(other.getTopologyId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getDevicesList().equals(other.getDevicesList()))
+                return false;
+            if (!getLinksList().equals(other.getLinksList()))
+                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 (hasTopologyId()) {
+                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (getDevicesCount() > 0) {
+                hash = (37 * hash) + DEVICES_FIELD_NUMBER;
+                hash = (53 * hash) + getDevicesList().hashCode();
+            }
+            if (getLinksCount() > 0) {
+                hash = (37 * hash) + LINKS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinksList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.TopologyDetails prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.TopologyDetails}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyDetails)
+        context.ContextOuterClass.TopologyDetailsOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                name_ = "";
+                if (devicesBuilder_ == null) {
+                    devices_ = java.util.Collections.emptyList();
+                } else {
+                    devices_ = null;
+                    devicesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (linksBuilder_ == null) {
+                    links_ = java.util.Collections.emptyList();
+                } else {
+                    links_ = null;
+                    linksBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
+                return context.ContextOuterClass.TopologyDetails.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyDetails build() {
+                context.ContextOuterClass.TopologyDetails result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyDetails buildPartial() {
+                context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) {
+                if (devicesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        devices_ = java.util.Collections.unmodifiableList(devices_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.devices_ = devices_;
+                } else {
+                    result.devices_ = devicesBuilder_.build();
+                }
+                if (linksBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        links_ = java.util.Collections.unmodifiableList(links_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.links_ = links_;
+                } else {
+                    result.links_ = linksBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.TopologyDetails result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TopologyDetails) {
+                    return mergeFrom((context.ContextOuterClass.TopologyDetails) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.TopologyDetails other) {
+                if (other == context.ContextOuterClass.TopologyDetails.getDefaultInstance())
+                    return this;
+                if (other.hasTopologyId()) {
+                    mergeTopologyId(other.getTopologyId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (devicesBuilder_ == null) {
+                    if (!other.devices_.isEmpty()) {
+                        if (devices_.isEmpty()) {
+                            devices_ = other.devices_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureDevicesIsMutable();
+                            devices_.addAll(other.devices_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.devices_.isEmpty()) {
+                        if (devicesBuilder_.isEmpty()) {
+                            devicesBuilder_.dispose();
+                            devicesBuilder_ = null;
+                            devices_ = other.devices_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
+                        } else {
+                            devicesBuilder_.addAllMessages(other.devices_);
+                        }
+                    }
+                }
+                if (linksBuilder_ == null) {
+                    if (!other.links_.isEmpty()) {
+                        if (links_.isEmpty()) {
+                            links_ = other.links_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureLinksIsMutable();
+                            links_.addAll(other.links_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.links_.isEmpty()) {
+                        if (linksBuilder_.isEmpty()) {
+                            linksBuilder_.dispose();
+                            linksBuilder_ = null;
+                            links_ = other.links_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
+                        } else {
+                            linksBuilder_.addAllMessages(other.links_);
+                        }
+                    }
+                }
+                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(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
+                                    if (devicesBuilder_ == null) {
+                                        ensureDevicesIsMutable();
+                                        devices_.add(m);
+                                    } else {
+                                        devicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
+                                    if (linksBuilder_ == null) {
+                                        ensureLinksIsMutable();
+                                        links_.add(m);
+                                    } else {
+                                        linksBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.TopologyId topologyId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return Whether the topologyId field is set.
+             */
+            public boolean hasTopologyId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return The topologyId.
+             */
+            public context.ContextOuterClass.TopologyId getTopologyId() {
+                if (topologyIdBuilder_ == null) {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                } else {
+                    return topologyIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    topologyId_ = value;
+                } else {
+                    topologyIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = builderForValue.build();
+                } else {
+                    topologyIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
+                    } else {
+                        topologyId_ = value;
+                    }
+                } else {
+                    topologyIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder clearTopologyId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getTopologyIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+                if (topologyIdBuilder_ != null) {
+                    return topologyIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
+                if (topologyIdBuilder_ == null) {
+                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
+                    topologyId_ = null;
+                }
+                return topologyIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();
+
+            private void ensureDevicesIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+                if (devicesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(devices_);
+                } else {
+                    return devicesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public int getDevicesCount() {
+                if (devicesBuilder_ == null) {
+                    return devices_.size();
+                } else {
+                    return devicesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public context.ContextOuterClass.Device getDevices(int index) {
+                if (devicesBuilder_ == null) {
+                    return devices_.get(index);
+                } else {
+                    return devicesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder setDevices(int index, context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.set(index, value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder setDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder addDevices(context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.add(value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder addDevices(int index, context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.add(index, value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder addDevices(context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder addDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder addAllDevices(java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, devices_);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder clearDevices() {
+                if (devicesBuilder_ == null) {
+                    devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    devicesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public Builder removeDevices(int index) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.remove(index);
+                    onChanged();
+                } else {
+                    devicesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public context.ContextOuterClass.Device.Builder getDevicesBuilder(int index) {
+                return getDevicesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
+                if (devicesBuilder_ == null) {
+                    return devices_.get(index);
+                } else {
+                    return devicesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
+                if (devicesBuilder_ != null) {
+                    return devicesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(devices_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
+                return getDevicesFieldBuilder().addBuilder(context.ContextOuterClass.Device.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public context.ContextOuterClass.Device.Builder addDevicesBuilder(int index) {
+                return getDevicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Device.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Device.Builder> getDevicesBuilderList() {
+                return getDevicesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
+                if (devicesBuilder_ == null) {
+                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    devices_ = null;
+                }
+                return devicesBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();
+
+            private void ensureLinksIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+                if (linksBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(links_);
+                } else {
+                    return linksBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public int getLinksCount() {
+                if (linksBuilder_ == null) {
+                    return links_.size();
+                } else {
+                    return linksBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public context.ContextOuterClass.Link getLinks(int index) {
+                if (linksBuilder_ == null) {
+                    return links_.get(index);
+                } else {
+                    return linksBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder setLinks(int index, context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.set(index, value);
+                    onChanged();
+                } else {
+                    linksBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder setLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder addLinks(context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.add(value);
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder addLinks(int index, context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.add(index, value);
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder addLinks(context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder addLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder addAllLinks(java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, links_);
+                    onChanged();
+                } else {
+                    linksBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder clearLinks() {
+                if (linksBuilder_ == null) {
+                    links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    linksBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public Builder removeLinks(int index) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.remove(index);
+                    onChanged();
+                } else {
+                    linksBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public context.ContextOuterClass.Link.Builder getLinksBuilder(int index) {
+                return getLinksFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
+                if (linksBuilder_ == null) {
+                    return links_.get(index);
+                } else {
+                    return linksBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
+                if (linksBuilder_ != null) {
+                    return linksBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(links_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public context.ContextOuterClass.Link.Builder addLinksBuilder() {
+                return getLinksFieldBuilder().addBuilder(context.ContextOuterClass.Link.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public context.ContextOuterClass.Link.Builder addLinksBuilder(int index) {
+                return getLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.Link.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Link links = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Link.Builder> getLinksBuilderList() {
+                return getLinksFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
+                if (linksBuilder_ == null) {
+                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    links_ = null;
+                }
+                return linksBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TopologyDetails)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.TopologyDetails)
+        private static final context.ContextOuterClass.TopologyDetails DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyDetails();
+        }
+
+        public static context.ContextOuterClass.TopologyDetails getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<TopologyDetails> PARSER = new com.google.protobuf.AbstractParser<TopologyDetails>() {
+
+            @java.lang.Override
+            public TopologyDetails 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<TopologyDetails> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<TopologyDetails> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        context.ContextOuterClass.TopologyId getTopologyIds(int index);
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        int getTopologyIdsCount();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.TopologyIdList}
+     */
+    public static final class TopologyIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyIdList)
+    TopologyIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use TopologyIdList.newBuilder() to construct.
+        private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private TopologyIdList() {
+            topologyIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TopologyIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
+        }
+
+        public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+            return topologyIds_;
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
+            return topologyIds_;
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getTopologyIdsCount() {
+            return topologyIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+            return topologyIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.TopologyId topology_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
+            return topologyIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < topologyIds_.size(); i++) {
+                output.writeMessage(1, topologyIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < topologyIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i));
+            }
+            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 context.ContextOuterClass.TopologyIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
+            if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
+                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 (getTopologyIdsCount() > 0) {
+                hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.TopologyIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyIdList)
+        context.ContextOuterClass.TopologyIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (topologyIdsBuilder_ == null) {
+                    topologyIds_ = java.util.Collections.emptyList();
+                } else {
+                    topologyIds_ = null;
+                    topologyIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyIdList build() {
+                context.ContextOuterClass.TopologyIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyIdList buildPartial() {
+                context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) {
+                if (topologyIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.topologyIds_ = topologyIds_;
+                } else {
+                    result.topologyIds_ = topologyIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.TopologyIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TopologyIdList) {
+                    return mergeFrom((context.ContextOuterClass.TopologyIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.TopologyIdList other) {
+                if (other == context.ContextOuterClass.TopologyIdList.getDefaultInstance())
+                    return this;
+                if (topologyIdsBuilder_ == null) {
+                    if (!other.topologyIds_.isEmpty()) {
+                        if (topologyIds_.isEmpty()) {
+                            topologyIds_ = other.topologyIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureTopologyIdsIsMutable();
+                            topologyIds_.addAll(other.topologyIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.topologyIds_.isEmpty()) {
+                        if (topologyIdsBuilder_.isEmpty()) {
+                            topologyIdsBuilder_.dispose();
+                            topologyIdsBuilder_ = null;
+                            topologyIds_ = other.topologyIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
+                        } else {
+                            topologyIdsBuilder_.addAllMessages(other.topologyIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
+                                    if (topologyIdsBuilder_ == null) {
+                                        ensureTopologyIdsIsMutable();
+                                        topologyIds_.add(m);
+                                    } else {
+                                        topologyIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();
+
+            private void ensureTopologyIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
+                if (topologyIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(topologyIds_);
+                } else {
+                    return topologyIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public int getTopologyIdsCount() {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.size();
+                } else {
+                    return topologyIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.get(index);
+                } else {
+                    return topologyIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.set(index, value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
+                if (topologyIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(index, value);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder addTopologyIds(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder addAllTopologyIds(java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologyIds_);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder clearTopologyIds() {
+                if (topologyIdsBuilder_ == null) {
+                    topologyIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public Builder removeTopologyIds(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    ensureTopologyIdsIsMutable();
+                    topologyIds_.remove(index);
+                    onChanged();
+                } else {
+                    topologyIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(int index) {
+                return getTopologyIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
+                if (topologyIdsBuilder_ == null) {
+                    return topologyIds_.get(index);
+                } else {
+                    return topologyIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
+                if (topologyIdsBuilder_ != null) {
+                    return topologyIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(topologyIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
+                return getTopologyIdsFieldBuilder().addBuilder(context.ContextOuterClass.TopologyId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(int index) {
+                return getTopologyIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.TopologyId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.TopologyId topology_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.TopologyId.Builder> getTopologyIdsBuilderList() {
+                return getTopologyIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
+                if (topologyIdsBuilder_ == null) {
+                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    topologyIds_ = null;
+                }
+                return topologyIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TopologyIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.TopologyIdList)
+        private static final context.ContextOuterClass.TopologyIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyIdList();
+        }
+
+        public static context.ContextOuterClass.TopologyIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<TopologyIdList> PARSER = new com.google.protobuf.AbstractParser<TopologyIdList>() {
+
+            @java.lang.Override
+            public TopologyIdList 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<TopologyIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<TopologyIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Topology> getTopologiesList();
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        context.ContextOuterClass.Topology getTopologies(int index);
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        int getTopologiesCount();
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList();
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.TopologyList}
+     */
+    public static final class TopologyList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyList)
+    TopologyListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use TopologyList.newBuilder() to construct.
+        private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private TopologyList() {
+            topologies_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TopologyList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
+        }
+
+        public static final int TOPOLOGIES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Topology> topologies_;
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
+            return topologies_;
+        }
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList() {
+            return topologies_;
+        }
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        @java.lang.Override
+        public int getTopologiesCount() {
+            return topologies_.size();
+        }
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Topology getTopologies(int index) {
+            return topologies_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Topology topologies = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index) {
+            return topologies_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < topologies_.size(); i++) {
+                output.writeMessage(1, topologies_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < topologies_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i));
+            }
+            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 context.ContextOuterClass.TopologyList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
+            if (!getTopologiesList().equals(other.getTopologiesList()))
+                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 (getTopologiesCount() > 0) {
+                hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologiesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.TopologyList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyList)
+        context.ContextOuterClass.TopologyListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TopologyList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (topologiesBuilder_ == null) {
+                    topologies_ = java.util.Collections.emptyList();
+                } else {
+                    topologies_ = null;
+                    topologiesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
+                return context.ContextOuterClass.TopologyList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyList build() {
+                context.ContextOuterClass.TopologyList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyList buildPartial() {
+                context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) {
+                if (topologiesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        topologies_ = java.util.Collections.unmodifiableList(topologies_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.topologies_ = topologies_;
+                } else {
+                    result.topologies_ = topologiesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.TopologyList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TopologyList) {
+                    return mergeFrom((context.ContextOuterClass.TopologyList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.TopologyList other) {
+                if (other == context.ContextOuterClass.TopologyList.getDefaultInstance())
+                    return this;
+                if (topologiesBuilder_ == null) {
+                    if (!other.topologies_.isEmpty()) {
+                        if (topologies_.isEmpty()) {
+                            topologies_ = other.topologies_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureTopologiesIsMutable();
+                            topologies_.addAll(other.topologies_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.topologies_.isEmpty()) {
+                        if (topologiesBuilder_.isEmpty()) {
+                            topologiesBuilder_.dispose();
+                            topologiesBuilder_ = null;
+                            topologies_ = other.topologies_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            topologiesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologiesFieldBuilder() : null;
+                        } else {
+                            topologiesBuilder_.addAllMessages(other.topologies_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry);
+                                    if (topologiesBuilder_ == null) {
+                                        ensureTopologiesIsMutable();
+                                        topologies_.add(m);
+                                    } else {
+                                        topologiesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Topology> topologies_ = java.util.Collections.emptyList();
+
+            private void ensureTopologiesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>(topologies_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> topologiesBuilder_;
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
+                if (topologiesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(topologies_);
+                } else {
+                    return topologiesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public int getTopologiesCount() {
+                if (topologiesBuilder_ == null) {
+                    return topologies_.size();
+                } else {
+                    return topologiesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public context.ContextOuterClass.Topology getTopologies(int index) {
+                if (topologiesBuilder_ == null) {
+                    return topologies_.get(index);
+                } else {
+                    return topologiesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder setTopologies(int index, context.ContextOuterClass.Topology value) {
+                if (topologiesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologiesIsMutable();
+                    topologies_.set(index, value);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder setTopologies(int index, context.ContextOuterClass.Topology.Builder builderForValue) {
+                if (topologiesBuilder_ == null) {
+                    ensureTopologiesIsMutable();
+                    topologies_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologiesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder addTopologies(context.ContextOuterClass.Topology value) {
+                if (topologiesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologiesIsMutable();
+                    topologies_.add(value);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder addTopologies(int index, context.ContextOuterClass.Topology value) {
+                if (topologiesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureTopologiesIsMutable();
+                    topologies_.add(index, value);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder addTopologies(context.ContextOuterClass.Topology.Builder builderForValue) {
+                if (topologiesBuilder_ == null) {
+                    ensureTopologiesIsMutable();
+                    topologies_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    topologiesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder addTopologies(int index, context.ContextOuterClass.Topology.Builder builderForValue) {
+                if (topologiesBuilder_ == null) {
+                    ensureTopologiesIsMutable();
+                    topologies_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    topologiesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder addAllTopologies(java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
+                if (topologiesBuilder_ == null) {
+                    ensureTopologiesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologies_);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder clearTopologies() {
+                if (topologiesBuilder_ == null) {
+                    topologies_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public Builder removeTopologies(int index) {
+                if (topologiesBuilder_ == null) {
+                    ensureTopologiesIsMutable();
+                    topologies_.remove(index);
+                    onChanged();
+                } else {
+                    topologiesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public context.ContextOuterClass.Topology.Builder getTopologiesBuilder(int index) {
+                return getTopologiesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index) {
+                if (topologiesBuilder_ == null) {
+                    return topologies_.get(index);
+                } else {
+                    return topologiesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList() {
+                if (topologiesBuilder_ != null) {
+                    return topologiesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(topologies_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
+                return getTopologiesFieldBuilder().addBuilder(context.ContextOuterClass.Topology.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(int index) {
+                return getTopologiesFieldBuilder().addBuilder(index, context.ContextOuterClass.Topology.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Topology topologies = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Topology.Builder> getTopologiesBuilderList() {
+                return getTopologiesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> getTopologiesFieldBuilder() {
+                if (topologiesBuilder_ == null) {
+                    topologiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder>(topologies_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    topologies_ = null;
+                }
+                return topologiesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TopologyList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.TopologyList)
+        private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
+        }
+
+        public static context.ContextOuterClass.TopologyList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<TopologyList> PARSER = new com.google.protobuf.AbstractParser<TopologyList>() {
+
+            @java.lang.Override
+            public TopologyList 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<TopologyList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<TopologyList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface TopologyEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         * @return Whether the topologyId field is set.
+         */
+        boolean hasTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         * @return The topologyId.
+         */
+        context.ContextOuterClass.TopologyId getTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.TopologyEvent}
+     */
+    public static final class TopologyEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyEvent)
+    TopologyEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use TopologyEvent.newBuilder() to construct.
+        private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private TopologyEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TopologyEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.TopologyId topologyId_;
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         * @return Whether the topologyId field is set.
+         */
+        @java.lang.Override
+        public boolean hasTopologyId() {
+            return topologyId_ != null;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         * @return The topologyId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyId() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (topologyId_ != null) {
+                output.writeMessage(2, getTopologyId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (topologyId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId());
+            }
+            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 context.ContextOuterClass.TopologyEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasTopologyId() != other.hasTopologyId())
+                return false;
+            if (hasTopologyId()) {
+                if (!getTopologyId().equals(other.getTopologyId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasTopologyId()) {
+                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.TopologyEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyEvent)
+        context.ContextOuterClass.TopologyEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyEvent build() {
+                context.ContextOuterClass.TopologyEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.TopologyEvent buildPartial() {
+                context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.TopologyEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TopologyEvent) {
+                    return mergeFrom((context.ContextOuterClass.TopologyEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.TopologyEvent other) {
+                if (other == context.ContextOuterClass.TopologyEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasTopologyId()) {
+                    mergeTopologyId(other.getTopologyId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.TopologyId topologyId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             * @return Whether the topologyId field is set.
+             */
+            public boolean hasTopologyId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             * @return The topologyId.
+             */
+            public context.ContextOuterClass.TopologyId getTopologyId() {
+                if (topologyIdBuilder_ == null) {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                } else {
+                    return topologyIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    topologyId_ = value;
+                } else {
+                    topologyIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = builderForValue.build();
+                } else {
+                    topologyIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
+                    } else {
+                        topologyId_ = value;
+                    }
+                } else {
+                    topologyIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public Builder clearTopologyId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getTopologyIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+                if (topologyIdBuilder_ != null) {
+                    return topologyIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
+                if (topologyIdBuilder_ == null) {
+                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
+                    topologyId_ = null;
+                }
+                return topologyIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.TopologyEvent)
+        private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
+        }
+
+        public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<TopologyEvent> PARSER = new com.google.protobuf.AbstractParser<TopologyEvent>() {
+
+            @java.lang.Override
+            public TopologyEvent 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<TopologyEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<TopologyEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         * @return Whether the deviceUuid field is set.
+         */
+        boolean hasDeviceUuid();
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         * @return The deviceUuid.
+         */
+        context.ContextOuterClass.Uuid getDeviceUuid();
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Device --------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.DeviceId}
+     */
+    public static final class DeviceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceId)
+    DeviceIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceId.newBuilder() to construct.
+        private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
+        }
+
+        public static final int DEVICE_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid deviceUuid_;
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         * @return Whether the deviceUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceUuid() {
+            return deviceUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         * @return The deviceUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getDeviceUuid() {
+            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid device_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
+            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+        }
+
+        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 (deviceUuid_ != null) {
+                output.writeMessage(1, getDeviceUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (deviceUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid());
+            }
+            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 context.ContextOuterClass.DeviceId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) obj;
+            if (hasDeviceUuid() != other.hasDeviceUuid())
+                return false;
+            if (hasDeviceUuid()) {
+                if (!getDeviceUuid().equals(other.getDeviceUuid()))
+                    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 (hasDeviceUuid()) {
+                hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Device --------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.DeviceId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceId)
+        context.ContextOuterClass.DeviceIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                deviceUuid_ = null;
+                if (deviceUuidBuilder_ != null) {
+                    deviceUuidBuilder_.dispose();
+                    deviceUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceId build() {
+                context.ContextOuterClass.DeviceId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceId buildPartial() {
+                context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceId) {
+                    return mergeFrom((context.ContextOuterClass.DeviceId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceId other) {
+                if (other == context.ContextOuterClass.DeviceId.getDefaultInstance())
+                    return this;
+                if (other.hasDeviceUuid()) {
+                    mergeDeviceUuid(other.getDeviceUuid());
+                }
+                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(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid deviceUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             * @return Whether the deviceUuid field is set.
+             */
+            public boolean hasDeviceUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             * @return The deviceUuid.
+             */
+            public context.ContextOuterClass.Uuid getDeviceUuid() {
+                if (deviceUuidBuilder_ == null) {
+                    return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+                } else {
+                    return deviceUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
+                if (deviceUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceUuid_ = value;
+                } else {
+                    deviceUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuid_ = builderForValue.build();
+                } else {
+                    deviceUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
+                if (deviceUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getDeviceUuidBuilder().mergeFrom(value);
+                    } else {
+                        deviceUuid_ = value;
+                    }
+                } else {
+                    deviceUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public Builder clearDeviceUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                deviceUuid_ = null;
+                if (deviceUuidBuilder_ != null) {
+                    deviceUuidBuilder_.dispose();
+                    deviceUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDeviceUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
+                if (deviceUuidBuilder_ != null) {
+                    return deviceUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid device_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getDeviceUuidFieldBuilder() {
+                if (deviceUuidBuilder_ == null) {
+                    deviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getDeviceUuid(), getParentForChildren(), isClean());
+                    deviceUuid_ = null;
+                }
+                return deviceUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceId)
+        private static final context.ContextOuterClass.DeviceId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceId();
+        }
+
+        public static context.ContextOuterClass.DeviceId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceId> PARSER = new com.google.protobuf.AbstractParser<DeviceId>() {
+
+            @java.lang.Override
+            public DeviceId 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<DeviceId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Device)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         * @return Whether the deviceId field is set.
+         */
+        boolean hasDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         * @return The deviceId.
+         */
+        context.ContextOuterClass.DeviceId getDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>string device_type = 3;</code>
+         * @return The deviceType.
+         */
+        java.lang.String getDeviceType();
+
+        /**
+         * <code>string device_type = 3;</code>
+         * @return The bytes for deviceType.
+         */
+        com.google.protobuf.ByteString getDeviceTypeBytes();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         * @return Whether the deviceConfig field is set.
+         */
+        boolean hasDeviceConfig();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         * @return The deviceConfig.
+         */
+        context.ContextOuterClass.DeviceConfig getDeviceConfig();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         */
+        context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
+
+        /**
+         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+         * @return The enum numeric value on the wire for deviceOperationalStatus.
+         */
+        int getDeviceOperationalStatusValue();
+
+        /**
+         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+         * @return The deviceOperationalStatus.
+         */
+        context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus();
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return A list containing the deviceDrivers.
+         */
+        java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList();
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return The count of deviceDrivers.
+         */
+        int getDeviceDriversCount();
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @param index The index of the element to return.
+         * @return The deviceDrivers at the given index.
+         */
+        context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index);
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return A list containing the enum numeric values on the wire for deviceDrivers.
+         */
+        java.util.List<java.lang.Integer> getDeviceDriversValueList();
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of deviceDrivers at the given index.
+         */
+        int getDeviceDriversValue(int index);
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList();
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        context.ContextOuterClass.EndPoint getDeviceEndpoints(int index);
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        int getDeviceEndpointsCount();
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index);
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        java.util.List<context.ContextOuterClass.Component> getComponentsList();
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        context.ContextOuterClass.Component getComponents(int index);
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        int getComponentsCount();
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList();
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index);
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         * @return Whether the controllerId field is set.
+         */
+        boolean hasControllerId();
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         * @return The controllerId.
+         */
+        context.ContextOuterClass.DeviceId getControllerId();
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Device}
+     */
+    public static final class Device extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Device)
+    DeviceOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Device.newBuilder() to construct.
+        private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Device() {
+            name_ = "";
+            deviceType_ = "";
+            deviceOperationalStatus_ = 0;
+            deviceDrivers_ = java.util.Collections.emptyList();
+            deviceEndpoints_ = java.util.Collections.emptyList();
+            components_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Device();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Device_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
+        }
+
+        public static final int DEVICE_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.DeviceId deviceId_;
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         * @return Whether the deviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceId() {
+            return deviceId_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         * @return The deviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceId() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 DEVICE_TYPE_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object deviceType_ = "";
+
+        /**
+         * <code>string device_type = 3;</code>
+         * @return The deviceType.
+         */
+        @java.lang.Override
+        public java.lang.String getDeviceType() {
+            java.lang.Object ref = deviceType_;
+            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();
+                deviceType_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string device_type = 3;</code>
+         * @return The bytes for deviceType.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDeviceTypeBytes() {
+            java.lang.Object ref = deviceType_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                deviceType_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DEVICE_CONFIG_FIELD_NUMBER = 4;
+
+        private context.ContextOuterClass.DeviceConfig deviceConfig_;
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         * @return Whether the deviceConfig field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceConfig() {
+            return deviceConfig_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         * @return The deviceConfig.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+        }
+
+        /**
+         * <code>.context.DeviceConfig device_config = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+        }
+
+        public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
+
+        private int deviceOperationalStatus_ = 0;
+
+        /**
+         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+         * @return The enum numeric value on the wire for deviceOperationalStatus.
+         */
+        @java.lang.Override
+        public int getDeviceOperationalStatusValue() {
+            return deviceOperationalStatus_;
+        }
+
+        /**
+         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+         * @return The deviceOperationalStatus.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
+            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+            return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
+
+        @SuppressWarnings("serial")
+        private java.util.List<java.lang.Integer> deviceDrivers_;
+
+        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {
+
+            public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
+                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from);
+                return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
+            }
+        };
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return A list containing the deviceDrivers.
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
+            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
+        }
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return The count of deviceDrivers.
+         */
+        @java.lang.Override
+        public int getDeviceDriversCount() {
+            return deviceDrivers_.size();
+        }
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @param index The index of the element to return.
+         * @return The deviceDrivers at the given index.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
+            return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
+        }
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @return A list containing the enum numeric values on the wire for deviceDrivers.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getDeviceDriversValueList() {
+            return deviceDrivers_;
+        }
+
+        /**
+         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of deviceDrivers at the given index.
+         */
+        @java.lang.Override
+        public int getDeviceDriversValue(int index) {
+            return deviceDrivers_.get(index);
+        }
+
+        private int deviceDriversMemoizedSerializedSize;
+
+        public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
+            return deviceEndpoints_;
+        }
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList() {
+            return deviceEndpoints_;
+        }
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        @java.lang.Override
+        public int getDeviceEndpointsCount() {
+            return deviceEndpoints_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
+            return deviceEndpoints_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index) {
+            return deviceEndpoints_.get(index);
+        }
+
+        public static final int COMPONENTS_FIELD_NUMBER = 8;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Component> components_;
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
+            return components_;
+        }
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList() {
+            return components_;
+        }
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        @java.lang.Override
+        public int getComponentsCount() {
+            return components_.size();
+        }
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Component getComponents(int index) {
+            return components_.get(index);
+        }
+
+        /**
+         * <pre>
+         * Used for inventory
+         * </pre>
+         *
+         * <code>repeated .context.Component components = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index) {
+            return components_.get(index);
+        }
+
+        public static final int CONTROLLER_ID_FIELD_NUMBER = 9;
+
+        private context.ContextOuterClass.DeviceId controllerId_;
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         * @return Whether the controllerId field is set.
+         */
+        @java.lang.Override
+        public boolean hasControllerId() {
+            return controllerId_ != null;
+        }
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         * @return The controllerId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getControllerId() {
+            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+        }
+
+        /**
+         * <pre>
+         * Identifier of node controlling the actual device
+         * </pre>
+         *
+         * <code>.context.DeviceId controller_id = 9;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
+            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getSerializedSize();
+            if (deviceId_ != null) {
+                output.writeMessage(1, getDeviceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
+            }
+            if (deviceConfig_ != null) {
+                output.writeMessage(4, getDeviceConfig());
+            }
+            if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
+                output.writeEnum(5, deviceOperationalStatus_);
+            }
+            if (getDeviceDriversList().size() > 0) {
+                output.writeUInt32NoTag(50);
+                output.writeUInt32NoTag(deviceDriversMemoizedSerializedSize);
+            }
+            for (int i = 0; i < deviceDrivers_.size(); i++) {
+                output.writeEnumNoTag(deviceDrivers_.get(i));
+            }
+            for (int i = 0; i < deviceEndpoints_.size(); i++) {
+                output.writeMessage(7, deviceEndpoints_.get(i));
+            }
+            for (int i = 0; i < components_.size(); i++) {
+                output.writeMessage(8, components_.get(i));
+            }
+            if (controllerId_ != null) {
+                output.writeMessage(9, getControllerId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (deviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
+            }
+            if (deviceConfig_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getDeviceConfig());
+            }
+            if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(5, deviceOperationalStatus_);
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < deviceDrivers_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(deviceDrivers_.get(i));
+                }
+                size += dataSize;
+                if (!getDeviceDriversList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
+                }
+                deviceDriversMemoizedSerializedSize = dataSize;
+            }
+            for (int i = 0; i < deviceEndpoints_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, deviceEndpoints_.get(i));
+            }
+            for (int i = 0; i < components_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, components_.get(i));
+            }
+            if (controllerId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId());
+            }
+            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 context.ContextOuterClass.Device)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;
+            if (hasDeviceId() != other.hasDeviceId())
+                return false;
+            if (hasDeviceId()) {
+                if (!getDeviceId().equals(other.getDeviceId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getDeviceType().equals(other.getDeviceType()))
+                return false;
+            if (hasDeviceConfig() != other.hasDeviceConfig())
+                return false;
+            if (hasDeviceConfig()) {
+                if (!getDeviceConfig().equals(other.getDeviceConfig()))
+                    return false;
+            }
+            if (deviceOperationalStatus_ != other.deviceOperationalStatus_)
+                return false;
+            if (!deviceDrivers_.equals(other.deviceDrivers_))
+                return false;
+            if (!getDeviceEndpointsList().equals(other.getDeviceEndpointsList()))
+                return false;
+            if (!getComponentsList().equals(other.getComponentsList()))
+                return false;
+            if (hasControllerId() != other.hasControllerId())
+                return false;
+            if (hasControllerId()) {
+                if (!getControllerId().equals(other.getControllerId()))
+                    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 (hasDeviceId()) {
+                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            hash = (37 * hash) + DEVICE_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getDeviceType().hashCode();
+            if (hasDeviceConfig()) {
+                hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceConfig().hashCode();
+            }
+            hash = (37 * hash) + DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER;
+            hash = (53 * hash) + deviceOperationalStatus_;
+            if (getDeviceDriversCount() > 0) {
+                hash = (37 * hash) + DEVICE_DRIVERS_FIELD_NUMBER;
+                hash = (53 * hash) + deviceDrivers_.hashCode();
+            }
+            if (getDeviceEndpointsCount() > 0) {
+                hash = (37 * hash) + DEVICE_ENDPOINTS_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceEndpointsList().hashCode();
+            }
+            if (getComponentsCount() > 0) {
+                hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
+                hash = (53 * hash) + getComponentsList().hashCode();
+            }
+            if (hasControllerId()) {
+                hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getControllerId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Device prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Device}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Device)
+        context.ContextOuterClass.DeviceOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Device_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Device.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                name_ = "";
+                deviceType_ = "";
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
+                    deviceConfigBuilder_ = null;
+                }
+                deviceOperationalStatus_ = 0;
+                deviceDrivers_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+                if (deviceEndpointsBuilder_ == null) {
+                    deviceEndpoints_ = java.util.Collections.emptyList();
+                } else {
+                    deviceEndpoints_ = null;
+                    deviceEndpointsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000040);
+                if (componentsBuilder_ == null) {
+                    components_ = java.util.Collections.emptyList();
+                } else {
+                    components_ = null;
+                    componentsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000080);
+                controllerId_ = null;
+                if (controllerIdBuilder_ != null) {
+                    controllerIdBuilder_.dispose();
+                    controllerIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Device_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Device getDefaultInstanceForType() {
+                return context.ContextOuterClass.Device.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Device build() {
+                context.ContextOuterClass.Device result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Device buildPartial() {
+                context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) {
+                if (((bitField0_ & 0x00000020) != 0)) {
+                    deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                }
+                result.deviceDrivers_ = deviceDrivers_;
+                if (deviceEndpointsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000040) != 0)) {
+                        deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
+                        bitField0_ = (bitField0_ & ~0x00000040);
+                    }
+                    result.deviceEndpoints_ = deviceEndpoints_;
+                } else {
+                    result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
+                }
+                if (componentsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000080) != 0)) {
+                        components_ = java.util.Collections.unmodifiableList(components_);
+                        bitField0_ = (bitField0_ & ~0x00000080);
+                    }
+                    result.components_ = components_;
+                } else {
+                    result.components_ = componentsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Device result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.deviceType_ = deviceType_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.deviceOperationalStatus_ = deviceOperationalStatus_;
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Device) {
+                    return mergeFrom((context.ContextOuterClass.Device) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Device other) {
+                if (other == context.ContextOuterClass.Device.getDefaultInstance())
+                    return this;
+                if (other.hasDeviceId()) {
+                    mergeDeviceId(other.getDeviceId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (!other.getDeviceType().isEmpty()) {
+                    deviceType_ = other.deviceType_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (other.hasDeviceConfig()) {
+                    mergeDeviceConfig(other.getDeviceConfig());
+                }
+                if (other.deviceOperationalStatus_ != 0) {
+                    setDeviceOperationalStatusValue(other.getDeviceOperationalStatusValue());
+                }
+                if (!other.deviceDrivers_.isEmpty()) {
+                    if (deviceDrivers_.isEmpty()) {
+                        deviceDrivers_ = other.deviceDrivers_;
+                        bitField0_ = (bitField0_ & ~0x00000020);
+                    } else {
+                        ensureDeviceDriversIsMutable();
+                        deviceDrivers_.addAll(other.deviceDrivers_);
+                    }
+                    onChanged();
+                }
+                if (deviceEndpointsBuilder_ == null) {
+                    if (!other.deviceEndpoints_.isEmpty()) {
+                        if (deviceEndpoints_.isEmpty()) {
+                            deviceEndpoints_ = other.deviceEndpoints_;
+                            bitField0_ = (bitField0_ & ~0x00000040);
+                        } else {
+                            ensureDeviceEndpointsIsMutable();
+                            deviceEndpoints_.addAll(other.deviceEndpoints_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.deviceEndpoints_.isEmpty()) {
+                        if (deviceEndpointsBuilder_.isEmpty()) {
+                            deviceEndpointsBuilder_.dispose();
+                            deviceEndpointsBuilder_ = null;
+                            deviceEndpoints_ = other.deviceEndpoints_;
+                            bitField0_ = (bitField0_ & ~0x00000040);
+                            deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null;
+                        } else {
+                            deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
+                        }
+                    }
+                }
+                if (componentsBuilder_ == null) {
+                    if (!other.components_.isEmpty()) {
+                        if (components_.isEmpty()) {
+                            components_ = other.components_;
+                            bitField0_ = (bitField0_ & ~0x00000080);
+                        } else {
+                            ensureComponentsIsMutable();
+                            components_.addAll(other.components_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.components_.isEmpty()) {
+                        if (componentsBuilder_.isEmpty()) {
+                            componentsBuilder_.dispose();
+                            componentsBuilder_ = null;
+                            components_ = other.components_;
+                            bitField0_ = (bitField0_ & ~0x00000080);
+                            componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null;
+                        } else {
+                            componentsBuilder_.addAllMessages(other.components_);
+                        }
+                    }
+                }
+                if (other.hasControllerId()) {
+                    mergeControllerId(other.getControllerId());
+                }
+                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(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    deviceType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 40:
+                                {
+                                    deviceOperationalStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureDeviceDriversIsMutable();
+                                    deviceDrivers_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 48
+                            case 50:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureDeviceDriversIsMutable();
+                                        deviceDrivers_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry);
+                                    if (deviceEndpointsBuilder_ == null) {
+                                        ensureDeviceEndpointsIsMutable();
+                                        deviceEndpoints_.add(m);
+                                    } else {
+                                        deviceEndpointsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry);
+                                    if (componentsBuilder_ == null) {
+                                        ensureComponentsIsMutable();
+                                        components_.add(m);
+                                    } else {
+                                        componentsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 74
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.DeviceId deviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             * @return Whether the deviceId field is set.
+             */
+            public boolean hasDeviceId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             * @return The deviceId.
+             */
+            public context.ContextOuterClass.DeviceId getDeviceId() {
+                if (deviceIdBuilder_ == null) {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                } else {
+                    return deviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceId_ = value;
+                } else {
+                    deviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = builderForValue.build();
+                } else {
+                    deviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
+                    } else {
+                        deviceId_ = value;
+                    }
+                } else {
+                    deviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public Builder clearDeviceId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDeviceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+                if (deviceIdBuilder_ != null) {
+                    return deviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
+                if (deviceIdBuilder_ == null) {
+                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
+                    deviceId_ = null;
+                }
+                return deviceIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object deviceType_ = "";
+
+            /**
+             * <code>string device_type = 3;</code>
+             * @return The deviceType.
+             */
+            public java.lang.String getDeviceType() {
+                java.lang.Object ref = deviceType_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    deviceType_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string device_type = 3;</code>
+             * @return The bytes for deviceType.
+             */
+            public com.google.protobuf.ByteString getDeviceTypeBytes() {
+                java.lang.Object ref = deviceType_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    deviceType_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string device_type = 3;</code>
+             * @param value The deviceType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceType(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                deviceType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string device_type = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDeviceType() {
+                deviceType_ = getDefaultInstance().getDeviceType();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string device_type = 3;</code>
+             * @param value The bytes for deviceType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceTypeBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                deviceType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.DeviceConfig deviceConfig_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             * @return Whether the deviceConfig field is set.
+             */
+            public boolean hasDeviceConfig() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             * @return The deviceConfig.
+             */
+            public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
+                if (deviceConfigBuilder_ == null) {
+                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+                } else {
+                    return deviceConfigBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (deviceConfigBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceConfig_ = value;
+                } else {
+                    deviceConfigBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = builderForValue.build();
+                } else {
+                    deviceConfigBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (deviceConfigBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDeviceConfigBuilder().mergeFrom(value);
+                    } else {
+                        deviceConfig_ = value;
+                    }
+                } else {
+                    deviceConfigBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public Builder clearDeviceConfig() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
+                    deviceConfigBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getDeviceConfigFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
+                if (deviceConfigBuilder_ != null) {
+                    return deviceConfigBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> getDeviceConfigFieldBuilder() {
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(getDeviceConfig(), getParentForChildren(), isClean());
+                    deviceConfig_ = null;
+                }
+                return deviceConfigBuilder_;
+            }
+
+            private int deviceOperationalStatus_ = 0;
+
+            /**
+             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+             * @return The enum numeric value on the wire for deviceOperationalStatus.
+             */
+            @java.lang.Override
+            public int getDeviceOperationalStatusValue() {
+                return deviceOperationalStatus_;
+            }
+
+            /**
+             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+             * @param value The enum numeric value on the wire for deviceOperationalStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceOperationalStatusValue(int value) {
+                deviceOperationalStatus_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+             * @return The deviceOperationalStatus.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
+                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
+                return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+             * @param value The deviceOperationalStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceOperationalStatus(context.ContextOuterClass.DeviceOperationalStatusEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000010;
+                deviceOperationalStatus_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDeviceOperationalStatus() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                deviceOperationalStatus_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<java.lang.Integer> deviceDrivers_ = java.util.Collections.emptyList();
+
+            private void ensureDeviceDriversIsMutable() {
+                if (!((bitField0_ & 0x00000020) != 0)) {
+                    deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
+                    bitField0_ |= 0x00000020;
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @return A list containing the deviceDrivers.
+             */
+            public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
+                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @return The count of deviceDrivers.
+             */
+            public int getDeviceDriversCount() {
+                return deviceDrivers_.size();
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param index The index of the element to return.
+             * @return The deviceDrivers at the given index.
+             */
+            public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
+                return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param index The index to set the value at.
+             * @param value The deviceDrivers to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceDrivers(int index, context.ContextOuterClass.DeviceDriverEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureDeviceDriversIsMutable();
+                deviceDrivers_.set(index, value.getNumber());
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param value The deviceDrivers to add.
+             * @return This builder for chaining.
+             */
+            public Builder addDeviceDrivers(context.ContextOuterClass.DeviceDriverEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureDeviceDriversIsMutable();
+                deviceDrivers_.add(value.getNumber());
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param values The deviceDrivers to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllDeviceDrivers(java.lang.Iterable<? extends context.ContextOuterClass.DeviceDriverEnum> values) {
+                ensureDeviceDriversIsMutable();
+                for (context.ContextOuterClass.DeviceDriverEnum value : values) {
+                    deviceDrivers_.add(value.getNumber());
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDeviceDrivers() {
+                deviceDrivers_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000020);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @return A list containing the enum numeric values on the wire for deviceDrivers.
+             */
+            public java.util.List<java.lang.Integer> getDeviceDriversValueList() {
+                return java.util.Collections.unmodifiableList(deviceDrivers_);
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of deviceDrivers at the given index.
+             */
+            public int getDeviceDriversValue(int index) {
+                return deviceDrivers_.get(index);
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for deviceDrivers to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceDriversValue(int index, int value) {
+                ensureDeviceDriversIsMutable();
+                deviceDrivers_.set(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param value The enum numeric value on the wire for deviceDrivers to add.
+             * @return This builder for chaining.
+             */
+            public Builder addDeviceDriversValue(int value) {
+                ensureDeviceDriversIsMutable();
+                deviceDrivers_.add(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
+             * @param values The enum numeric values on the wire for deviceDrivers to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllDeviceDriversValue(java.lang.Iterable<java.lang.Integer> values) {
+                ensureDeviceDriversIsMutable();
+                for (int value : values) {
+                    deviceDrivers_.add(value);
+                }
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ = java.util.Collections.emptyList();
+
+            private void ensureDeviceEndpointsIsMutable() {
+                if (!((bitField0_ & 0x00000040) != 0)) {
+                    deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
+                    bitField0_ |= 0x00000040;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> deviceEndpointsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
+                if (deviceEndpointsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(deviceEndpoints_);
+                } else {
+                    return deviceEndpointsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public int getDeviceEndpointsCount() {
+                if (deviceEndpointsBuilder_ == null) {
+                    return deviceEndpoints_.size();
+                } else {
+                    return deviceEndpointsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
+                if (deviceEndpointsBuilder_ == null) {
+                    return deviceEndpoints_.get(index);
+                } else {
+                    return deviceEndpointsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder setDeviceEndpoints(int index, context.ContextOuterClass.EndPoint value) {
+                if (deviceEndpointsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.set(index, value);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder setDeviceEndpoints(int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
+                if (deviceEndpointsBuilder_ == null) {
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint value) {
+                if (deviceEndpointsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.add(value);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder addDeviceEndpoints(int index, context.ContextOuterClass.EndPoint value) {
+                if (deviceEndpointsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.add(index, value);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint.Builder builderForValue) {
+                if (deviceEndpointsBuilder_ == null) {
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder addDeviceEndpoints(int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
+                if (deviceEndpointsBuilder_ == null) {
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder addAllDeviceEndpoints(java.lang.Iterable<? extends context.ContextOuterClass.EndPoint> values) {
+                if (deviceEndpointsBuilder_ == null) {
+                    ensureDeviceEndpointsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceEndpoints_);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder clearDeviceEndpoints() {
+                if (deviceEndpointsBuilder_ == null) {
+                    deviceEndpoints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000040);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public Builder removeDeviceEndpoints(int index) {
+                if (deviceEndpointsBuilder_ == null) {
+                    ensureDeviceEndpointsIsMutable();
+                    deviceEndpoints_.remove(index);
+                    onChanged();
+                } else {
+                    deviceEndpointsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public context.ContextOuterClass.EndPoint.Builder getDeviceEndpointsBuilder(int index) {
+                return getDeviceEndpointsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index) {
+                if (deviceEndpointsBuilder_ == null) {
+                    return deviceEndpoints_.get(index);
+                } else {
+                    return deviceEndpointsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList() {
+                if (deviceEndpointsBuilder_ != null) {
+                    return deviceEndpointsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(deviceEndpoints_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder() {
+                return getDeviceEndpointsFieldBuilder().addBuilder(context.ContextOuterClass.EndPoint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder(int index) {
+                return getDeviceEndpointsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPoint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPoint.Builder> getDeviceEndpointsBuilderList() {
+                return getDeviceEndpointsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsFieldBuilder() {
+                if (deviceEndpointsBuilder_ == null) {
+                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean());
+                    deviceEndpoints_ = null;
+                }
+                return deviceEndpointsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.Component> components_ = java.util.Collections.emptyList();
+
+            private void ensureComponentsIsMutable() {
+                if (!((bitField0_ & 0x00000080) != 0)) {
+                    components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
+                    bitField0_ |= 0x00000080;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentsBuilder_;
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
+                if (componentsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(components_);
+                } else {
+                    return componentsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public int getComponentsCount() {
+                if (componentsBuilder_ == null) {
+                    return components_.size();
+                } else {
+                    return componentsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public context.ContextOuterClass.Component getComponents(int index) {
+                if (componentsBuilder_ == null) {
+                    return components_.get(index);
+                } else {
+                    return componentsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder setComponents(int index, context.ContextOuterClass.Component value) {
+                if (componentsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureComponentsIsMutable();
+                    components_.set(index, value);
+                    onChanged();
+                } else {
+                    componentsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder setComponents(int index, context.ContextOuterClass.Component.Builder builderForValue) {
+                if (componentsBuilder_ == null) {
+                    ensureComponentsIsMutable();
+                    components_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    componentsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder addComponents(context.ContextOuterClass.Component value) {
+                if (componentsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureComponentsIsMutable();
+                    components_.add(value);
+                    onChanged();
+                } else {
+                    componentsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder addComponents(int index, context.ContextOuterClass.Component value) {
+                if (componentsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureComponentsIsMutable();
+                    components_.add(index, value);
+                    onChanged();
+                } else {
+                    componentsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder addComponents(context.ContextOuterClass.Component.Builder builderForValue) {
+                if (componentsBuilder_ == null) {
+                    ensureComponentsIsMutable();
+                    components_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    componentsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder addComponents(int index, context.ContextOuterClass.Component.Builder builderForValue) {
+                if (componentsBuilder_ == null) {
+                    ensureComponentsIsMutable();
+                    components_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    componentsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder addAllComponents(java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
+                if (componentsBuilder_ == null) {
+                    ensureComponentsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, components_);
+                    onChanged();
+                } else {
+                    componentsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder clearComponents() {
+                if (componentsBuilder_ == null) {
+                    components_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000080);
+                    onChanged();
+                } else {
+                    componentsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public Builder removeComponents(int index) {
+                if (componentsBuilder_ == null) {
+                    ensureComponentsIsMutable();
+                    components_.remove(index);
+                    onChanged();
+                } else {
+                    componentsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public context.ContextOuterClass.Component.Builder getComponentsBuilder(int index) {
+                return getComponentsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index) {
+                if (componentsBuilder_ == null) {
+                    return components_.get(index);
+                } else {
+                    return componentsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList() {
+                if (componentsBuilder_ != null) {
+                    return componentsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(components_);
+                }
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public context.ContextOuterClass.Component.Builder addComponentsBuilder() {
+                return getComponentsFieldBuilder().addBuilder(context.ContextOuterClass.Component.getDefaultInstance());
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public context.ContextOuterClass.Component.Builder addComponentsBuilder(int index) {
+                return getComponentsFieldBuilder().addBuilder(index, context.ContextOuterClass.Component.getDefaultInstance());
+            }
+
+            /**
+             * <pre>
+             * Used for inventory
+             * </pre>
+             *
+             * <code>repeated .context.Component components = 8;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Component.Builder> getComponentsBuilderList() {
+                return getComponentsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> getComponentsFieldBuilder() {
+                if (componentsBuilder_ == null) {
+                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean());
+                    components_ = null;
+                }
+                return componentsBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceId controllerId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> controllerIdBuilder_;
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             * @return Whether the controllerId field is set.
+             */
+            public boolean hasControllerId() {
+                return ((bitField0_ & 0x00000100) != 0);
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             * @return The controllerId.
+             */
+            public context.ContextOuterClass.DeviceId getControllerId() {
+                if (controllerIdBuilder_ == null) {
+                    return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+                } else {
+                    return controllerIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public Builder setControllerId(context.ContextOuterClass.DeviceId value) {
+                if (controllerIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    controllerId_ = value;
+                } else {
+                    controllerIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (controllerIdBuilder_ == null) {
+                    controllerId_ = builderForValue.build();
+                } else {
+                    controllerIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) {
+                if (controllerIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getControllerIdBuilder().mergeFrom(value);
+                    } else {
+                        controllerId_ = value;
+                    }
+                } else {
+                    controllerIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public Builder clearControllerId() {
+                bitField0_ = (bitField0_ & ~0x00000100);
+                controllerId_ = null;
+                if (controllerIdBuilder_ != null) {
+                    controllerIdBuilder_.dispose();
+                    controllerIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return getControllerIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
+                if (controllerIdBuilder_ != null) {
+                    return controllerIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
+                }
+            }
+
+            /**
+             * <pre>
+             * Identifier of node controlling the actual device
+             * </pre>
+             *
+             * <code>.context.DeviceId controller_id = 9;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getControllerIdFieldBuilder() {
+                if (controllerIdBuilder_ == null) {
+                    controllerIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getControllerId(), getParentForChildren(), isClean());
+                    controllerId_ = null;
+                }
+                return controllerIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Device)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Device)
+        private static final context.ContextOuterClass.Device DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Device();
+        }
+
+        public static context.ContextOuterClass.Device getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Device> PARSER = new com.google.protobuf.AbstractParser<Device>() {
+
+            @java.lang.Override
+            public Device 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<Device> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Device> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Device getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ComponentOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Component)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         * @return Whether the componentUuid field is set.
+         */
+        boolean hasComponentUuid();
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         * @return The componentUuid.
+         */
+        context.ContextOuterClass.Uuid getComponentUuid();
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>string type = 3;</code>
+         * @return The type.
+         */
+        java.lang.String getType();
+
+        /**
+         * <code>string type = 3;</code>
+         * @return The bytes for type.
+         */
+        com.google.protobuf.ByteString getTypeBytes();
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        int getAttributesCount();
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        boolean containsAttributes(java.lang.String key);
+
+        /**
+         * Use {@link #getAttributesMap()} instead.
+         */
+        @java.lang.Deprecated
+        java.util.Map<java.lang.String, java.lang.String> getAttributes();
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        java.util.Map<java.lang.String, java.lang.String> getAttributesMap();
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        /* nullable */
+        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+        java.lang.String defaultValue);
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        java.lang.String getAttributesOrThrow(java.lang.String key);
+
+        /**
+         * <code>string parent = 5;</code>
+         * @return The parent.
+         */
+        java.lang.String getParent();
+
+        /**
+         * <code>string parent = 5;</code>
+         * @return The bytes for parent.
+         */
+        com.google.protobuf.ByteString getParentBytes();
+    }
+
+    /**
+     *  <pre>
+     * Defined previously to this section - Tested OK
+     *  </pre>
+     *
+     *  Protobuf type {@code context.Component}
+     */
+    public static final class Component extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Component)
+    ComponentOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Component.newBuilder() to construct.
+        private Component(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Component() {
+            name_ = "";
+            type_ = "";
+            parent_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Component();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Component_descriptor;
+        }
+
+        @SuppressWarnings({ "rawtypes" })
+        @java.lang.Override
+        protected com.google.protobuf.MapField internalGetMapField(int number) {
+            switch(number) {
+                case 4:
+                    return internalGetAttributes();
+                default:
+                    throw new RuntimeException("Invalid map field number: " + number);
+            }
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
+        }
+
+        public static final int COMPONENT_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid componentUuid_;
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         * @return Whether the componentUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasComponentUuid() {
+            return componentUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         * @return The componentUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getComponentUuid() {
+            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid component_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
+            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 TYPE_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object type_ = "";
+
+        /**
+         * <code>string type = 3;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string type = 3;</code>
+         * @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 ATTRIBUTES_FIELD_NUMBER = 4;
+
+        private static final class AttributesDefaultEntryHolder {
+
+            static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_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> attributes_;
+
+        private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
+            if (attributes_ == null) {
+                return com.google.protobuf.MapField.emptyMapField(AttributesDefaultEntryHolder.defaultEntry);
+            }
+            return attributes_;
+        }
+
+        public int getAttributesCount() {
+            return internalGetAttributes().getMap().size();
+        }
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        @java.lang.Override
+        public boolean containsAttributes(java.lang.String key) {
+            if (key == null) {
+                throw new NullPointerException("map key");
+            }
+            return internalGetAttributes().getMap().containsKey(key);
+        }
+
+        /**
+         * Use {@link #getAttributesMap()} instead.
+         */
+        @java.lang.Override
+        @java.lang.Deprecated
+        public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
+            return getAttributesMap();
+        }
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
+            return internalGetAttributes().getMap();
+        }
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        @java.lang.Override
+        public /* nullable */
+        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+        java.lang.String defaultValue) {
+            if (key == null) {
+                throw new NullPointerException("map key");
+            }
+            java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
+            return map.containsKey(key) ? map.get(key) : defaultValue;
+        }
+
+        /**
+         * <pre>
+         * dict[attr.name =&gt; json.dumps(attr.value)]
+         * </pre>
+         *
+         * <code>map&lt;string, string&gt; attributes = 4;</code>
+         */
+        @java.lang.Override
+        public java.lang.String getAttributesOrThrow(java.lang.String key) {
+            if (key == null) {
+                throw new NullPointerException("map key");
+            }
+            java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
+            if (!map.containsKey(key)) {
+                throw new java.lang.IllegalArgumentException();
+            }
+            return map.get(key);
+        }
+
+        public static final int PARENT_FIELD_NUMBER = 5;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object parent_ = "";
+
+        /**
+         * <code>string parent = 5;</code>
+         * @return The parent.
+         */
+        @java.lang.Override
+        public java.lang.String getParent() {
+            java.lang.Object ref = parent_;
+            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();
+                parent_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string parent = 5;</code>
+         * @return The bytes for parent.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getParentBytes() {
+            java.lang.Object ref = parent_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                parent_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (componentUuid_ != null) {
+                output.writeMessage(1, getComponentUuid());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
+            }
+            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (componentUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
+            }
+            for (java.util.Map.Entry<java.lang.String, java.lang.String> entry : internalGetAttributes().getMap().entrySet()) {
+                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
+            }
+            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 context.ContextOuterClass.Component)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Component other = (context.ContextOuterClass.Component) obj;
+            if (hasComponentUuid() != other.hasComponentUuid())
+                return false;
+            if (hasComponentUuid()) {
+                if (!getComponentUuid().equals(other.getComponentUuid()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getType().equals(other.getType()))
+                return false;
+            if (!internalGetAttributes().equals(other.internalGetAttributes()))
+                return false;
+            if (!getParent().equals(other.getParent()))
+                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 (hasComponentUuid()) {
+                hash = (37 * hash) + COMPONENT_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getComponentUuid().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            hash = (37 * hash) + TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getType().hashCode();
+            if (!internalGetAttributes().getMap().isEmpty()) {
+                hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
+                hash = (53 * hash) + internalGetAttributes().hashCode();
+            }
+            hash = (37 * hash) + PARENT_FIELD_NUMBER;
+            hash = (53 * hash) + getParent().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Component prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         *  <pre>
+         * Defined previously to this section - Tested OK
+         *  </pre>
+         *
+         *  Protobuf type {@code context.Component}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Component)
+        context.ContextOuterClass.ComponentOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Component_descriptor;
+            }
+
+            @SuppressWarnings({ "rawtypes" })
+            protected com.google.protobuf.MapField internalGetMapField(int number) {
+                switch(number) {
+                    case 4:
+                        return internalGetAttributes();
+                    default:
+                        throw new RuntimeException("Invalid map field number: " + number);
+                }
+            }
+
+            @SuppressWarnings({ "rawtypes" })
+            protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
+                switch(number) {
+                    case 4:
+                        return internalGetMutableAttributes();
+                    default:
+                        throw new RuntimeException("Invalid map field number: " + number);
+                }
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Component.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
+                    componentUuidBuilder_ = null;
+                }
+                name_ = "";
+                type_ = "";
+                internalGetMutableAttributes().clear();
+                parent_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Component_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Component getDefaultInstanceForType() {
+                return context.ContextOuterClass.Component.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Component build() {
+                context.ContextOuterClass.Component result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Component buildPartial() {
+                context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Component result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.type_ = type_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = internalGetAttributes();
+                    result.attributes_.makeImmutable();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.parent_ = parent_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Component) {
+                    return mergeFrom((context.ContextOuterClass.Component) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Component other) {
+                if (other == context.ContextOuterClass.Component.getDefaultInstance())
+                    return this;
+                if (other.hasComponentUuid()) {
+                    mergeComponentUuid(other.getComponentUuid());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (!other.getType().isEmpty()) {
+                    type_ = other.type_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
+                bitField0_ |= 0x00000008;
+                if (!other.getParent().isEmpty()) {
+                    parent_ = other.parent_;
+                    bitField0_ |= 0x00000010;
+                    onChanged();
+                }
+                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(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    type_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    parent_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid componentUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> componentUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             * @return Whether the componentUuid field is set.
+             */
+            public boolean hasComponentUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             * @return The componentUuid.
+             */
+            public context.ContextOuterClass.Uuid getComponentUuid() {
+                if (componentUuidBuilder_ == null) {
+                    return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+                } else {
+                    return componentUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public Builder setComponentUuid(context.ContextOuterClass.Uuid value) {
+                if (componentUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    componentUuid_ = value;
+                } else {
+                    componentUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (componentUuidBuilder_ == null) {
+                    componentUuid_ = builderForValue.build();
+                } else {
+                    componentUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
+                if (componentUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getComponentUuidBuilder().mergeFrom(value);
+                    } else {
+                        componentUuid_ = value;
+                    }
+                } else {
+                    componentUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public Builder clearComponentUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                componentUuid_ = null;
+                if (componentUuidBuilder_ != null) {
+                    componentUuidBuilder_.dispose();
+                    componentUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getComponentUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
+                if (componentUuidBuilder_ != null) {
+                    return componentUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid component_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getComponentUuidFieldBuilder() {
+                if (componentUuidBuilder_ == null) {
+                    componentUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getComponentUuid(), getParentForChildren(), isClean());
+                    componentUuid_ = null;
+                }
+                return componentUuidBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object type_ = "";
+
+            /**
+             * <code>string type = 3;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string type = 3;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string type = 3;</code>
+             * @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_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string type = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearType() {
+                type_ = getDefaultInstance().getType();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string type = 3;</code>
+             * @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_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            private com.google.protobuf.MapField<java.lang.String, java.lang.String> attributes_;
+
+            private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
+                if (attributes_ == null) {
+                    return com.google.protobuf.MapField.emptyMapField(AttributesDefaultEntryHolder.defaultEntry);
+                }
+                return attributes_;
+            }
+
+            private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMutableAttributes() {
+                if (attributes_ == null) {
+                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
+                }
+                if (!attributes_.isMutable()) {
+                    attributes_ = attributes_.copy();
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return attributes_;
+            }
+
+            public int getAttributesCount() {
+                return internalGetAttributes().getMap().size();
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            @java.lang.Override
+            public boolean containsAttributes(java.lang.String key) {
+                if (key == null) {
+                    throw new NullPointerException("map key");
+                }
+                return internalGetAttributes().getMap().containsKey(key);
+            }
+
+            /**
+             * Use {@link #getAttributesMap()} instead.
+             */
+            @java.lang.Override
+            @java.lang.Deprecated
+            public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
+                return getAttributesMap();
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            @java.lang.Override
+            public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
+                return internalGetAttributes().getMap();
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            @java.lang.Override
+            public /* nullable */
+            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
+            java.lang.String defaultValue) {
+                if (key == null) {
+                    throw new NullPointerException("map key");
+                }
+                java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
+                return map.containsKey(key) ? map.get(key) : defaultValue;
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            @java.lang.Override
+            public java.lang.String getAttributesOrThrow(java.lang.String key) {
+                if (key == null) {
+                    throw new NullPointerException("map key");
+                }
+                java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
+                if (!map.containsKey(key)) {
+                    throw new java.lang.IllegalArgumentException();
+                }
+                return map.get(key);
+            }
+
+            public Builder clearAttributes() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                internalGetMutableAttributes().getMutableMap().clear();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            public Builder removeAttributes(java.lang.String key) {
+                if (key == null) {
+                    throw new NullPointerException("map key");
+                }
+                internalGetMutableAttributes().getMutableMap().remove(key);
+                return this;
+            }
+
+            /**
+             * Use alternate mutation accessors instead.
+             */
+            @java.lang.Deprecated
+            public java.util.Map<java.lang.String, java.lang.String> getMutableAttributes() {
+                bitField0_ |= 0x00000008;
+                return internalGetMutableAttributes().getMutableMap();
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            public Builder putAttributes(java.lang.String key, java.lang.String value) {
+                if (key == null) {
+                    throw new NullPointerException("map key");
+                }
+                if (value == null) {
+                    throw new NullPointerException("map value");
+                }
+                internalGetMutableAttributes().getMutableMap().put(key, value);
+                bitField0_ |= 0x00000008;
+                return this;
+            }
+
+            /**
+             * <pre>
+             * dict[attr.name =&gt; json.dumps(attr.value)]
+             * </pre>
+             *
+             * <code>map&lt;string, string&gt; attributes = 4;</code>
+             */
+            public Builder putAllAttributes(java.util.Map<java.lang.String, java.lang.String> values) {
+                internalGetMutableAttributes().getMutableMap().putAll(values);
+                bitField0_ |= 0x00000008;
+                return this;
+            }
+
+            private java.lang.Object parent_ = "";
+
+            /**
+             * <code>string parent = 5;</code>
+             * @return The parent.
+             */
+            public java.lang.String getParent() {
+                java.lang.Object ref = parent_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    parent_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string parent = 5;</code>
+             * @return The bytes for parent.
+             */
+            public com.google.protobuf.ByteString getParentBytes() {
+                java.lang.Object ref = parent_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    parent_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string parent = 5;</code>
+             * @param value The parent to set.
+             * @return This builder for chaining.
+             */
+            public Builder setParent(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                parent_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string parent = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearParent() {
+                parent_ = getDefaultInstance().getParent();
+                bitField0_ = (bitField0_ & ~0x00000010);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string parent = 5;</code>
+             * @param value The bytes for parent to set.
+             * @return This builder for chaining.
+             */
+            public Builder setParentBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                parent_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Component)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Component)
+        private static final context.ContextOuterClass.Component DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Component();
+        }
+
+        public static context.ContextOuterClass.Component getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Component> PARSER = new com.google.protobuf.AbstractParser<Component>() {
+
+            @java.lang.Override
+            public Component 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<Component> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Component> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Component getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRule getConfigRules(int index);
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        int getConfigRulesCount();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.DeviceConfig}
+     */
+    public static final class DeviceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceConfig)
+    DeviceConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceConfig.newBuilder() to construct.
+        private DeviceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceConfig() {
+            configRules_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceConfig();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
+        }
+
+        public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public int getConfigRulesCount() {
+            return configRules_.size();
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+            return configRules_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+            return configRules_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < configRules_.size(); i++) {
+                output.writeMessage(1, configRules_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < configRules_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
+            }
+            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 context.ContextOuterClass.DeviceConfig)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
+            if (!getConfigRulesList().equals(other.getConfigRulesList()))
+                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 (getConfigRulesCount() > 0) {
+                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+                hash = (53 * hash) + getConfigRulesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.DeviceConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceConfig)
+        context.ContextOuterClass.DeviceConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                } else {
+                    configRules_ = null;
+                    configRulesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceConfig build() {
+                context.ContextOuterClass.DeviceConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceConfig buildPartial() {
+                context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
+                if (configRulesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.configRules_ = configRules_;
+                } else {
+                    result.configRules_ = configRulesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceConfig) {
+                    return mergeFrom((context.ContextOuterClass.DeviceConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceConfig other) {
+                if (other == context.ContextOuterClass.DeviceConfig.getDefaultInstance())
+                    return this;
+                if (configRulesBuilder_ == null) {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRules_.isEmpty()) {
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureConfigRulesIsMutable();
+                            configRules_.addAll(other.configRules_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRulesBuilder_.isEmpty()) {
+                            configRulesBuilder_.dispose();
+                            configRulesBuilder_ = null;
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
+                        } else {
+                            configRulesBuilder_.addAllMessages(other.configRules_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();
+
+            private void ensureConfigRulesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+                if (configRulesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                } else {
+                    return configRulesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public int getConfigRulesCount() {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.size();
+                } else {
+                    return configRulesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder clearConfigRules() {
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder removeConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.remove(index);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+                if (configRulesBuilder_ != null) {
+                    return configRulesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
+                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
+                return getConfigRulesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
+                if (configRulesBuilder_ == null) {
+                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    configRules_ = null;
+                }
+                return configRulesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceConfig)
+        private static final context.ContextOuterClass.DeviceConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceConfig();
+        }
+
+        public static context.ContextOuterClass.DeviceConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceConfig> PARSER = new com.google.protobuf.AbstractParser<DeviceConfig>() {
+
+            @java.lang.Override
+            public DeviceConfig 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<DeviceConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        context.ContextOuterClass.DeviceId getDeviceIds(int index);
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        int getDeviceIdsCount();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.DeviceIdList}
+     */
+    public static final class DeviceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceIdList)
+    DeviceIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceIdList.newBuilder() to construct.
+        private DeviceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceIdList() {
+            deviceIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
+        }
+
+        public static final int DEVICE_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+            return deviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+            return deviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getDeviceIdsCount() {
+            return deviceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+            return deviceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.DeviceId device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+            return deviceIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                output.writeMessage(1, deviceIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
+            }
+            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 context.ContextOuterClass.DeviceIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
+            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
+                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 (getDeviceIdsCount() > 0) {
+                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.DeviceIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceIdList)
+        context.ContextOuterClass.DeviceIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                } else {
+                    deviceIds_ = null;
+                    deviceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceIdList build() {
+                context.ContextOuterClass.DeviceIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceIdList buildPartial() {
+                context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
+                if (deviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.deviceIds_ = deviceIds_;
+                } else {
+                    result.deviceIds_ = deviceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceIdList) {
+                    return mergeFrom((context.ContextOuterClass.DeviceIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceIdList other) {
+                if (other == context.ContextOuterClass.DeviceIdList.getDefaultInstance())
+                    return this;
+                if (deviceIdsBuilder_ == null) {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIds_.isEmpty()) {
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureDeviceIdsIsMutable();
+                            deviceIds_.addAll(other.deviceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIdsBuilder_.isEmpty()) {
+                            deviceIdsBuilder_.dispose();
+                            deviceIdsBuilder_ = null;
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
+                        } else {
+                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
+
+            private void ensureDeviceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+                if (deviceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                } else {
+                    return deviceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public int getDeviceIdsCount() {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.size();
+                } else {
+                    return deviceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder clearDeviceIds() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public Builder removeDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.remove(index);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+                if (deviceIdsBuilder_ != null) {
+                    return deviceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
+                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.DeviceId device_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
+                return getDeviceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    deviceIds_ = null;
+                }
+                return deviceIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceIdList)
+        private static final context.ContextOuterClass.DeviceIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceIdList();
+        }
+
+        public static context.ContextOuterClass.DeviceIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceIdList> PARSER = new com.google.protobuf.AbstractParser<DeviceIdList>() {
+
+            @java.lang.Override
+            public DeviceIdList 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<DeviceIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Device> getDevicesList();
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        context.ContextOuterClass.Device getDevices(int index);
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        int getDevicesCount();
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList();
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.DeviceList}
+     */
+    public static final class DeviceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceList)
+    DeviceListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceList.newBuilder() to construct.
+        private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceList() {
+            devices_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
+        }
+
+        public static final int DEVICES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Device> devices_;
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+            return devices_;
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
+            return devices_;
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        @java.lang.Override
+        public int getDevicesCount() {
+            return devices_.size();
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Device getDevices(int index) {
+            return devices_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Device devices = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
+            return devices_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < devices_.size(); i++) {
+                output.writeMessage(1, devices_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < devices_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
+            }
+            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 context.ContextOuterClass.DeviceList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
+            if (!getDevicesList().equals(other.getDevicesList()))
+                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 (getDevicesCount() > 0) {
+                hash = (37 * hash) + DEVICES_FIELD_NUMBER;
+                hash = (53 * hash) + getDevicesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.DeviceList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceList)
+        context.ContextOuterClass.DeviceListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (devicesBuilder_ == null) {
+                    devices_ = java.util.Collections.emptyList();
+                } else {
+                    devices_ = null;
+                    devicesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceList build() {
+                context.ContextOuterClass.DeviceList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceList buildPartial() {
+                context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
+                if (devicesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        devices_ = java.util.Collections.unmodifiableList(devices_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.devices_ = devices_;
+                } else {
+                    result.devices_ = devicesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceList) {
+                    return mergeFrom((context.ContextOuterClass.DeviceList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceList other) {
+                if (other == context.ContextOuterClass.DeviceList.getDefaultInstance())
+                    return this;
+                if (devicesBuilder_ == null) {
+                    if (!other.devices_.isEmpty()) {
+                        if (devices_.isEmpty()) {
+                            devices_ = other.devices_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureDevicesIsMutable();
+                            devices_.addAll(other.devices_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.devices_.isEmpty()) {
+                        if (devicesBuilder_.isEmpty()) {
+                            devicesBuilder_.dispose();
+                            devicesBuilder_ = null;
+                            devices_ = other.devices_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
+                        } else {
+                            devicesBuilder_.addAllMessages(other.devices_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
+                                    if (devicesBuilder_ == null) {
+                                        ensureDevicesIsMutable();
+                                        devices_.add(m);
+                                    } else {
+                                        devicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();
+
+            private void ensureDevicesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
+                if (devicesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(devices_);
+                } else {
+                    return devicesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public int getDevicesCount() {
+                if (devicesBuilder_ == null) {
+                    return devices_.size();
+                } else {
+                    return devicesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public context.ContextOuterClass.Device getDevices(int index) {
+                if (devicesBuilder_ == null) {
+                    return devices_.get(index);
+                } else {
+                    return devicesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder setDevices(int index, context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.set(index, value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder setDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder addDevices(context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.add(value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder addDevices(int index, context.ContextOuterClass.Device value) {
+                if (devicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevicesIsMutable();
+                    devices_.add(index, value);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder addDevices(context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder addDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devicesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder addAllDevices(java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, devices_);
+                    onChanged();
+                } else {
+                    devicesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder clearDevices() {
+                if (devicesBuilder_ == null) {
+                    devices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    devicesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public Builder removeDevices(int index) {
+                if (devicesBuilder_ == null) {
+                    ensureDevicesIsMutable();
+                    devices_.remove(index);
+                    onChanged();
+                } else {
+                    devicesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public context.ContextOuterClass.Device.Builder getDevicesBuilder(int index) {
+                return getDevicesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
+                if (devicesBuilder_ == null) {
+                    return devices_.get(index);
+                } else {
+                    return devicesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
+                if (devicesBuilder_ != null) {
+                    return devicesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(devices_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
+                return getDevicesFieldBuilder().addBuilder(context.ContextOuterClass.Device.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public context.ContextOuterClass.Device.Builder addDevicesBuilder(int index) {
+                return getDevicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Device.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Device devices = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Device.Builder> getDevicesBuilderList() {
+                return getDevicesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
+                if (devicesBuilder_ == null) {
+                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    devices_ = null;
+                }
+                return devicesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceList)
+        private static final context.ContextOuterClass.DeviceList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceList();
+        }
+
+        public static context.ContextOuterClass.DeviceList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceList> PARSER = new com.google.protobuf.AbstractParser<DeviceList>() {
+
+            @java.lang.Override
+            public DeviceList 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<DeviceList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceFilter)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         * @return Whether the deviceIds field is set.
+         */
+        boolean hasDeviceIds();
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         * @return The deviceIds.
+         */
+        context.ContextOuterClass.DeviceIdList getDeviceIds();
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         */
+        context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder();
+
+        /**
+         * <code>bool include_endpoints = 2;</code>
+         * @return The includeEndpoints.
+         */
+        boolean getIncludeEndpoints();
+
+        /**
+         * <code>bool include_config_rules = 3;</code>
+         * @return The includeConfigRules.
+         */
+        boolean getIncludeConfigRules();
+
+        /**
+         * <code>bool include_components = 4;</code>
+         * @return The includeComponents.
+         */
+        boolean getIncludeComponents();
+    }
+
+    /**
+     * Protobuf type {@code context.DeviceFilter}
+     */
+    public static final class DeviceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceFilter)
+    DeviceFilterOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceFilter.newBuilder() to construct.
+        private DeviceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceFilter() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceFilter();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
+        }
+
+        public static final int DEVICE_IDS_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.DeviceIdList deviceIds_;
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         * @return Whether the deviceIds field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceIds() {
+            return deviceIds_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         * @return The deviceIds.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdList getDeviceIds() {
+            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+        }
+
+        /**
+         * <code>.context.DeviceIdList device_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
+            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+        }
+
+        public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
+
+        private boolean includeEndpoints_ = false;
+
+        /**
+         * <code>bool include_endpoints = 2;</code>
+         * @return The includeEndpoints.
+         */
+        @java.lang.Override
+        public boolean getIncludeEndpoints() {
+            return includeEndpoints_;
+        }
+
+        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
+
+        private boolean includeConfigRules_ = false;
+
+        /**
+         * <code>bool include_config_rules = 3;</code>
+         * @return The includeConfigRules.
+         */
+        @java.lang.Override
+        public boolean getIncludeConfigRules() {
+            return includeConfigRules_;
+        }
+
+        public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
+
+        private boolean includeComponents_ = false;
+
+        /**
+         * <code>bool include_components = 4;</code>
+         * @return The includeComponents.
+         */
+        @java.lang.Override
+        public boolean getIncludeComponents() {
+            return includeComponents_;
+        }
+
+        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 (deviceIds_ != null) {
+                output.writeMessage(1, getDeviceIds());
+            }
+            if (includeEndpoints_ != false) {
+                output.writeBool(2, includeEndpoints_);
+            }
+            if (includeConfigRules_ != false) {
+                output.writeBool(3, includeConfigRules_);
+            }
+            if (includeComponents_ != false) {
+                output.writeBool(4, includeComponents_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (deviceIds_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceIds());
+            }
+            if (includeEndpoints_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpoints_);
+            }
+            if (includeConfigRules_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConfigRules_);
+            }
+            if (includeComponents_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
+            }
+            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 context.ContextOuterClass.DeviceFilter)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceFilter other = (context.ContextOuterClass.DeviceFilter) obj;
+            if (hasDeviceIds() != other.hasDeviceIds())
+                return false;
+            if (hasDeviceIds()) {
+                if (!getDeviceIds().equals(other.getDeviceIds()))
+                    return false;
+            }
+            if (getIncludeEndpoints() != other.getIncludeEndpoints())
+                return false;
+            if (getIncludeConfigRules() != other.getIncludeConfigRules())
+                return false;
+            if (getIncludeComponents() != other.getIncludeComponents())
+                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 (hasDeviceIds()) {
+                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceIds().hashCode();
+            }
+            hash = (37 * hash) + INCLUDE_ENDPOINTS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpoints());
+            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
+            hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceFilter prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.DeviceFilter}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceFilter)
+        context.ContextOuterClass.DeviceFilterOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
+                    deviceIdsBuilder_ = null;
+                }
+                includeEndpoints_ = false;
+                includeConfigRules_ = false;
+                includeComponents_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceFilter.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceFilter build() {
+                context.ContextOuterClass.DeviceFilter result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceFilter buildPartial() {
+                context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpoints_ = includeEndpoints_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeComponents_ = includeComponents_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceFilter) {
+                    return mergeFrom((context.ContextOuterClass.DeviceFilter) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceFilter other) {
+                if (other == context.ContextOuterClass.DeviceFilter.getDefaultInstance())
+                    return this;
+                if (other.hasDeviceIds()) {
+                    mergeDeviceIds(other.getDeviceIds());
+                }
+                if (other.getIncludeEndpoints() != false) {
+                    setIncludeEndpoints(other.getIncludeEndpoints());
+                }
+                if (other.getIncludeConfigRules() != false) {
+                    setIncludeConfigRules(other.getIncludeConfigRules());
+                }
+                if (other.getIncludeComponents() != false) {
+                    setIncludeComponents(other.getIncludeComponents());
+                }
+                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(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpoints_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeComponents_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.DeviceIdList deviceIds_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> deviceIdsBuilder_;
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             * @return Whether the deviceIds field is set.
+             */
+            public boolean hasDeviceIds() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             * @return The deviceIds.
+             */
+            public context.ContextOuterClass.DeviceIdList getDeviceIds() {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+                } else {
+                    return deviceIdsBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceIds_ = value;
+                } else {
+                    deviceIdsBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = builderForValue.build();
+                } else {
+                    deviceIdsBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
+                        getDeviceIdsBuilder().mergeFrom(value);
+                    } else {
+                        deviceIds_ = value;
+                    }
+                } else {
+                    deviceIdsBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public Builder clearDeviceIds() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                deviceIds_ = null;
+                if (deviceIdsBuilder_ != null) {
+                    deviceIdsBuilder_.dispose();
+                    deviceIdsBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDeviceIdsFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
+                if (deviceIdsBuilder_ != null) {
+                    return deviceIdsBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceIdList device_ids = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> getDeviceIdsFieldBuilder() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder>(getDeviceIds(), getParentForChildren(), isClean());
+                    deviceIds_ = null;
+                }
+                return deviceIdsBuilder_;
+            }
+
+            private boolean includeEndpoints_;
+
+            /**
+             * <code>bool include_endpoints = 2;</code>
+             * @return The includeEndpoints.
+             */
+            @java.lang.Override
+            public boolean getIncludeEndpoints() {
+                return includeEndpoints_;
+            }
+
+            /**
+             * <code>bool include_endpoints = 2;</code>
+             * @param value The includeEndpoints to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeEndpoints(boolean value) {
+                includeEndpoints_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_endpoints = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeEndpoints() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                includeEndpoints_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeConfigRules_;
+
+            /**
+             * <code>bool include_config_rules = 3;</code>
+             * @return The includeConfigRules.
+             */
+            @java.lang.Override
+            public boolean getIncludeConfigRules() {
+                return includeConfigRules_;
+            }
+
+            /**
+             * <code>bool include_config_rules = 3;</code>
+             * @param value The includeConfigRules to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeConfigRules(boolean value) {
+                includeConfigRules_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_config_rules = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                includeConfigRules_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeComponents_;
+
+            /**
+             * <code>bool include_components = 4;</code>
+             * @return The includeComponents.
+             */
+            @java.lang.Override
+            public boolean getIncludeComponents() {
+                return includeComponents_;
+            }
+
+            /**
+             * <code>bool include_components = 4;</code>
+             * @param value The includeComponents to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeComponents(boolean value) {
+                includeComponents_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_components = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeComponents() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                includeComponents_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceFilter)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceFilter)
+        private static final context.ContextOuterClass.DeviceFilter DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceFilter();
+        }
+
+        public static context.ContextOuterClass.DeviceFilter getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceFilter> PARSER = new com.google.protobuf.AbstractParser<DeviceFilter>() {
+
+            @java.lang.Override
+            public DeviceFilter 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<DeviceFilter> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceFilter> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return Whether the deviceId field is set.
+         */
+        boolean hasDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return The deviceId.
+         */
+        context.ContextOuterClass.DeviceId getDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         * @return Whether the deviceConfig field is set.
+         */
+        boolean hasDeviceConfig();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         * @return The deviceConfig.
+         */
+        context.ContextOuterClass.DeviceConfig getDeviceConfig();
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         */
+        context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.DeviceEvent}
+     */
+    public static final class DeviceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceEvent)
+    DeviceEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceEvent.newBuilder() to construct.
+        private DeviceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int DEVICE_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.DeviceId deviceId_;
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return Whether the deviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceId() {
+            return deviceId_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return The deviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceId() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
+
+        private context.ContextOuterClass.DeviceConfig deviceConfig_;
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         * @return Whether the deviceConfig field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceConfig() {
+            return deviceConfig_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         * @return The deviceConfig.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+        }
+
+        /**
+         * <code>.context.DeviceConfig device_config = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
+            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (deviceId_ != null) {
+                output.writeMessage(2, getDeviceId());
+            }
+            if (deviceConfig_ != null) {
+                output.writeMessage(3, getDeviceConfig());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (deviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId());
+            }
+            if (deviceConfig_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
+            }
+            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 context.ContextOuterClass.DeviceEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.DeviceEvent other = (context.ContextOuterClass.DeviceEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasDeviceId() != other.hasDeviceId())
+                return false;
+            if (hasDeviceId()) {
+                if (!getDeviceId().equals(other.getDeviceId()))
+                    return false;
+            }
+            if (hasDeviceConfig() != other.hasDeviceConfig())
+                return false;
+            if (hasDeviceConfig()) {
+                if (!getDeviceConfig().equals(other.getDeviceConfig()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasDeviceId()) {
+                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceId().hashCode();
+            }
+            if (hasDeviceConfig()) {
+                hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceConfig().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.DeviceEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.DeviceEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceEvent)
+        context.ContextOuterClass.DeviceEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
+                    deviceConfigBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.DeviceEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceEvent build() {
+                context.ContextOuterClass.DeviceEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.DeviceEvent buildPartial() {
+                context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.DeviceEvent) {
+                    return mergeFrom((context.ContextOuterClass.DeviceEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.DeviceEvent other) {
+                if (other == context.ContextOuterClass.DeviceEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasDeviceId()) {
+                    mergeDeviceId(other.getDeviceId());
+                }
+                if (other.hasDeviceConfig()) {
+                    mergeDeviceConfig(other.getDeviceConfig());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceId deviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             * @return Whether the deviceId field is set.
+             */
+            public boolean hasDeviceId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             * @return The deviceId.
+             */
+            public context.ContextOuterClass.DeviceId getDeviceId() {
+                if (deviceIdBuilder_ == null) {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                } else {
+                    return deviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceId_ = value;
+                } else {
+                    deviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = builderForValue.build();
+                } else {
+                    deviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
+                    } else {
+                        deviceId_ = value;
+                    }
+                } else {
+                    deviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder clearDeviceId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getDeviceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+                if (deviceIdBuilder_ != null) {
+                    return deviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
+                if (deviceIdBuilder_ == null) {
+                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
+                    deviceId_ = null;
+                }
+                return deviceIdBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceConfig deviceConfig_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             * @return Whether the deviceConfig field is set.
+             */
+            public boolean hasDeviceConfig() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             * @return The deviceConfig.
+             */
+            public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
+                if (deviceConfigBuilder_ == null) {
+                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+                } else {
+                    return deviceConfigBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (deviceConfigBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceConfig_ = value;
+                } else {
+                    deviceConfigBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfig_ = builderForValue.build();
+                } else {
+                    deviceConfigBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (deviceConfigBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDeviceConfigBuilder().mergeFrom(value);
+                    } else {
+                        deviceConfig_ = value;
+                    }
+                } else {
+                    deviceConfigBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public Builder clearDeviceConfig() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                deviceConfig_ = null;
+                if (deviceConfigBuilder_ != null) {
+                    deviceConfigBuilder_.dispose();
+                    deviceConfigBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getDeviceConfigFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
+                if (deviceConfigBuilder_ != null) {
+                    return deviceConfigBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig device_config = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> getDeviceConfigFieldBuilder() {
+                if (deviceConfigBuilder_ == null) {
+                    deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(getDeviceConfig(), getParentForChildren(), isClean());
+                    deviceConfig_ = null;
+                }
+                return deviceConfigBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.DeviceEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.DeviceEvent)
+        private static final context.ContextOuterClass.DeviceEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceEvent();
+        }
+
+        public static context.ContextOuterClass.DeviceEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceEvent> PARSER = new com.google.protobuf.AbstractParser<DeviceEvent>() {
+
+            @java.lang.Override
+            public DeviceEvent 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<DeviceEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         * @return Whether the linkUuid field is set.
+         */
+        boolean hasLinkUuid();
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         * @return The linkUuid.
+         */
+        context.ContextOuterClass.Uuid getLinkUuid();
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Link ----------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.LinkId}
+     */
+    public static final class LinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkId)
+    LinkIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use LinkId.newBuilder() to construct.
+        private LinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private LinkId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new LinkId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
+        }
+
+        public static final int LINK_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid linkUuid_;
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         * @return Whether the linkUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasLinkUuid() {
+            return linkUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         * @return The linkUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getLinkUuid() {
+            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid link_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
+            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+        }
+
+        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 (linkUuid_ != null) {
+                output.writeMessage(1, getLinkUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (linkUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
+            }
+            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 context.ContextOuterClass.LinkId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.LinkId other = (context.ContextOuterClass.LinkId) obj;
+            if (hasLinkUuid() != other.hasLinkUuid())
+                return false;
+            if (hasLinkUuid()) {
+                if (!getLinkUuid().equals(other.getLinkUuid()))
+                    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 (hasLinkUuid()) {
+                hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.LinkId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Link ----------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.LinkId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkId)
+        context.ContextOuterClass.LinkIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.LinkId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
+                    linkUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
+                return context.ContextOuterClass.LinkId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkId build() {
+                context.ContextOuterClass.LinkId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkId buildPartial() {
+                context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.LinkId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.LinkId) {
+                    return mergeFrom((context.ContextOuterClass.LinkId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.LinkId other) {
+                if (other == context.ContextOuterClass.LinkId.getDefaultInstance())
+                    return this;
+                if (other.hasLinkUuid()) {
+                    mergeLinkUuid(other.getLinkUuid());
+                }
+                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(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid linkUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             * @return Whether the linkUuid field is set.
+             */
+            public boolean hasLinkUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             * @return The linkUuid.
+             */
+            public context.ContextOuterClass.Uuid getLinkUuid() {
+                if (linkUuidBuilder_ == null) {
+                    return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+                } else {
+                    return linkUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public Builder setLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (linkUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    linkUuid_ = value;
+                } else {
+                    linkUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (linkUuidBuilder_ == null) {
+                    linkUuid_ = builderForValue.build();
+                } else {
+                    linkUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
+                if (linkUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getLinkUuidBuilder().mergeFrom(value);
+                    } else {
+                        linkUuid_ = value;
+                    }
+                } else {
+                    linkUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public Builder clearLinkUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkUuid_ = null;
+                if (linkUuidBuilder_ != null) {
+                    linkUuidBuilder_.dispose();
+                    linkUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getLinkUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
+                if (linkUuidBuilder_ != null) {
+                    return linkUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid link_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getLinkUuidFieldBuilder() {
+                if (linkUuidBuilder_ == null) {
+                    linkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getLinkUuid(), getParentForChildren(), isClean());
+                    linkUuid_ = null;
+                }
+                return linkUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.LinkId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.LinkId)
+        private static final context.ContextOuterClass.LinkId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkId();
+        }
+
+        public static context.ContextOuterClass.LinkId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<LinkId> PARSER = new com.google.protobuf.AbstractParser<LinkId>() {
+
+            @java.lang.Override
+            public LinkId 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<LinkId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LinkId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkAttributesOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkAttributes)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>float total_capacity_gbps = 1;</code>
+         * @return The totalCapacityGbps.
+         */
+        float getTotalCapacityGbps();
+
+        /**
+         * <code>float used_capacity_gbps = 2;</code>
+         * @return The usedCapacityGbps.
+         */
+        float getUsedCapacityGbps();
+    }
+
+    /**
+     * Protobuf type {@code context.LinkAttributes}
+     */
+    public static final class LinkAttributes extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkAttributes)
+    LinkAttributesOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use LinkAttributes.newBuilder() to construct.
+        private LinkAttributes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private LinkAttributes() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new LinkAttributes();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+        }
+
+        public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
+
+        private float totalCapacityGbps_ = 0F;
+
+        /**
+         * <code>float total_capacity_gbps = 1;</code>
+         * @return The totalCapacityGbps.
+         */
+        @java.lang.Override
+        public float getTotalCapacityGbps() {
+            return totalCapacityGbps_;
+        }
+
+        public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
+
+        private float usedCapacityGbps_ = 0F;
+
+        /**
+         * <code>float used_capacity_gbps = 2;</code>
+         * @return The usedCapacityGbps.
+         */
+        @java.lang.Override
+        public float getUsedCapacityGbps() {
+            return usedCapacityGbps_;
+        }
+
+        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.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+                output.writeFloat(1, totalCapacityGbps_);
+            }
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+                output.writeFloat(2, usedCapacityGbps_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
+            }
+            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
+            }
+            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 context.ContextOuterClass.LinkAttributes)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.LinkAttributes other = (context.ContextOuterClass.LinkAttributes) obj;
+            if (java.lang.Float.floatToIntBits(getTotalCapacityGbps()) != java.lang.Float.floatToIntBits(other.getTotalCapacityGbps()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
+                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) + TOTAL_CAPACITY_GBPS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
+            hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.LinkAttributes prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.LinkAttributes}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkAttributes)
+        context.ContextOuterClass.LinkAttributesOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                totalCapacityGbps_ = 0F;
+                usedCapacityGbps_ = 0F;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+                return context.ContextOuterClass.LinkAttributes.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkAttributes build() {
+                context.ContextOuterClass.LinkAttributes result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkAttributes buildPartial() {
+                context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.totalCapacityGbps_ = totalCapacityGbps_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.usedCapacityGbps_ = usedCapacityGbps_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.LinkAttributes) {
+                    return mergeFrom((context.ContextOuterClass.LinkAttributes) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.LinkAttributes other) {
+                if (other == context.ContextOuterClass.LinkAttributes.getDefaultInstance())
+                    return this;
+                if (other.getTotalCapacityGbps() != 0F) {
+                    setTotalCapacityGbps(other.getTotalCapacityGbps());
+                }
+                if (other.getUsedCapacityGbps() != 0F) {
+                    setUsedCapacityGbps(other.getUsedCapacityGbps());
+                }
+                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 13:
+                                {
+                                    totalCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    usedCapacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private float totalCapacityGbps_;
+
+            /**
+             * <code>float total_capacity_gbps = 1;</code>
+             * @return The totalCapacityGbps.
+             */
+            @java.lang.Override
+            public float getTotalCapacityGbps() {
+                return totalCapacityGbps_;
+            }
+
+            /**
+             * <code>float total_capacity_gbps = 1;</code>
+             * @param value The totalCapacityGbps to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTotalCapacityGbps(float value) {
+                totalCapacityGbps_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float total_capacity_gbps = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTotalCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                totalCapacityGbps_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private float usedCapacityGbps_;
+
+            /**
+             * <code>float used_capacity_gbps = 2;</code>
+             * @return The usedCapacityGbps.
+             */
+            @java.lang.Override
+            public float getUsedCapacityGbps() {
+                return usedCapacityGbps_;
+            }
+
+            /**
+             * <code>float used_capacity_gbps = 2;</code>
+             * @param value The usedCapacityGbps to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUsedCapacityGbps(float value) {
+                usedCapacityGbps_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float used_capacity_gbps = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUsedCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                usedCapacityGbps_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.LinkAttributes)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.LinkAttributes)
+        private static final context.ContextOuterClass.LinkAttributes DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkAttributes();
+        }
+
+        public static context.ContextOuterClass.LinkAttributes getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<LinkAttributes> PARSER = new com.google.protobuf.AbstractParser<LinkAttributes>() {
+
+            @java.lang.Override
+            public LinkAttributes 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<LinkAttributes> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LinkAttributes> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Link)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         * @return Whether the linkId field is set.
+         */
+        boolean hasLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         * @return The linkId.
+         */
+        context.ContextOuterClass.LinkId getLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList();
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        int getLinkEndpointIdsCount();
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index);
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         * @return Whether the attributes field is set.
+         */
+        boolean hasAttributes();
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         * @return The attributes.
+         */
+        context.ContextOuterClass.LinkAttributes getAttributes();
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         */
+        context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Link}
+     */
+    public static final class Link extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Link)
+    LinkOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Link.newBuilder() to construct.
+        private Link(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Link() {
+            name_ = "";
+            linkEndpointIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Link();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Link_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
+        }
+
+        public static final int LINK_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.LinkId linkId_;
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         * @return Whether the linkId field is set.
+         */
+        @java.lang.Override
+        public boolean hasLinkId() {
+            return linkId_ != null;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         * @return The linkId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkId() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
+            return linkEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
+            return linkEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getLinkEndpointIdsCount() {
+            return linkEndpointIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
+            return linkEndpointIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
+            return linkEndpointIds_.get(index);
+        }
+
+        public static final int ATTRIBUTES_FIELD_NUMBER = 4;
+
+        private context.ContextOuterClass.LinkAttributes attributes_;
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         * @return Whether the attributes field is set.
+         */
+        @java.lang.Override
+        public boolean hasAttributes() {
+            return attributes_ != null;
+        }
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         * @return The attributes.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkAttributes getAttributes() {
+            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        }
+
+        /**
+         * <code>.context.LinkAttributes attributes = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        }
+
+        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 (linkId_ != null) {
+                output.writeMessage(1, getLinkId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            for (int i = 0; i < linkEndpointIds_.size(); i++) {
+                output.writeMessage(3, linkEndpointIds_.get(i));
+            }
+            if (attributes_ != null) {
+                output.writeMessage(4, getAttributes());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (linkId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            for (int i = 0; i < linkEndpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, linkEndpointIds_.get(i));
+            }
+            if (attributes_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getAttributes());
+            }
+            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 context.ContextOuterClass.Link)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Link other = (context.ContextOuterClass.Link) obj;
+            if (hasLinkId() != other.hasLinkId())
+                return false;
+            if (hasLinkId()) {
+                if (!getLinkId().equals(other.getLinkId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getLinkEndpointIdsList().equals(other.getLinkEndpointIdsList()))
+                return false;
+            if (hasAttributes() != other.hasAttributes())
+                return false;
+            if (hasAttributes()) {
+                if (!getAttributes().equals(other.getAttributes()))
+                    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 (hasLinkId()) {
+                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (getLinkEndpointIdsCount() > 0) {
+                hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
+            }
+            if (hasAttributes()) {
+                hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
+                hash = (53 * hash) + getAttributes().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Link prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Link}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Link)
+        context.ContextOuterClass.LinkOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Link_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Link.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                name_ = "";
+                if (linkEndpointIdsBuilder_ == null) {
+                    linkEndpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    linkEndpointIds_ = null;
+                    linkEndpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
+                    attributesBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Link_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Link getDefaultInstanceForType() {
+                return context.ContextOuterClass.Link.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Link build() {
+                context.ContextOuterClass.Link result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Link buildPartial() {
+                context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.linkEndpointIds_ = linkEndpointIds_;
+                } else {
+                    result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Link result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Link) {
+                    return mergeFrom((context.ContextOuterClass.Link) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Link other) {
+                if (other == context.ContextOuterClass.Link.getDefaultInstance())
+                    return this;
+                if (other.hasLinkId()) {
+                    mergeLinkId(other.getLinkId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (linkEndpointIdsBuilder_ == null) {
+                    if (!other.linkEndpointIds_.isEmpty()) {
+                        if (linkEndpointIds_.isEmpty()) {
+                            linkEndpointIds_ = other.linkEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureLinkEndpointIdsIsMutable();
+                            linkEndpointIds_.addAll(other.linkEndpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.linkEndpointIds_.isEmpty()) {
+                        if (linkEndpointIdsBuilder_.isEmpty()) {
+                            linkEndpointIdsBuilder_.dispose();
+                            linkEndpointIdsBuilder_ = null;
+                            linkEndpointIds_ = other.linkEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
+                        } else {
+                            linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
+                        }
+                    }
+                }
+                if (other.hasAttributes()) {
+                    mergeAttributes(other.getAttributes());
+                }
+                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(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (linkEndpointIdsBuilder_ == null) {
+                                        ensureLinkEndpointIdsIsMutable();
+                                        linkEndpointIds_.add(m);
+                                    } else {
+                                        linkEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.LinkId linkId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             * @return Whether the linkId field is set.
+             */
+            public boolean hasLinkId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             * @return The linkId.
+             */
+            public context.ContextOuterClass.LinkId getLinkId() {
+                if (linkIdBuilder_ == null) {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                } else {
+                    return linkIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    linkId_ = value;
+                } else {
+                    linkIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdBuilder_ == null) {
+                    linkId_ = builderForValue.build();
+                } else {
+                    linkIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
+                    } else {
+                        linkId_ = value;
+                    }
+                } else {
+                    linkIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public Builder clearLinkId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getLinkIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+                if (linkIdBuilder_ != null) {
+                    return linkIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
+                if (linkIdBuilder_ == null) {
+                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
+                    linkId_ = null;
+                }
+                return linkIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ = java.util.Collections.emptyList();
+
+            private void ensureLinkEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
+                if (linkEndpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
+                } else {
+                    return linkEndpointIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public int getLinkEndpointIdsCount() {
+                if (linkEndpointIdsBuilder_ == null) {
+                    return linkEndpointIds_.size();
+                } else {
+                    return linkEndpointIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    return linkEndpointIds_.get(index);
+                } else {
+                    return linkEndpointIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.add(value);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder addAllLinkEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    ensureLinkEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkEndpointIds_);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder clearLinkEndpointIds() {
+                if (linkEndpointIdsBuilder_ == null) {
+                    linkEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public Builder removeLinkEndpointIds(int index) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    ensureLinkEndpointIdsIsMutable();
+                    linkEndpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    linkEndpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(int index) {
+                return getLinkEndpointIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
+                if (linkEndpointIdsBuilder_ == null) {
+                    return linkEndpointIds_.get(index);
+                } else {
+                    return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
+                if (linkEndpointIdsBuilder_ != null) {
+                    return linkEndpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
+                return getLinkEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(int index) {
+                return getLinkEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getLinkEndpointIdsBuilderList() {
+                return getLinkEndpointIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsFieldBuilder() {
+                if (linkEndpointIdsBuilder_ == null) {
+                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    linkEndpointIds_ = null;
+                }
+                return linkEndpointIdsBuilder_;
+            }
+
+            private context.ContextOuterClass.LinkAttributes attributes_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> attributesBuilder_;
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             * @return Whether the attributes field is set.
+             */
+            public boolean hasAttributes() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             * @return The attributes.
+             */
+            public context.ContextOuterClass.LinkAttributes getAttributes() {
+                if (attributesBuilder_ == null) {
+                    return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+                } else {
+                    return attributesBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public Builder setAttributes(context.ContextOuterClass.LinkAttributes value) {
+                if (attributesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    attributes_ = value;
+                } else {
+                    attributesBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
+                if (attributesBuilder_ == null) {
+                    attributes_ = builderForValue.build();
+                } else {
+                    attributesBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
+                if (attributesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
+                        getAttributesBuilder().mergeFrom(value);
+                    } else {
+                        attributes_ = value;
+                    }
+                } else {
+                    attributesBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public Builder clearAttributes() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                attributes_ = null;
+                if (attributesBuilder_ != null) {
+                    attributesBuilder_.dispose();
+                    attributesBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getAttributesFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+                if (attributesBuilder_ != null) {
+                    return attributesBuilder_.getMessageOrBuilder();
+                } else {
+                    return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+                }
+            }
+
+            /**
+             * <code>.context.LinkAttributes attributes = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> getAttributesFieldBuilder() {
+                if (attributesBuilder_ == null) {
+                    attributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder>(getAttributes(), getParentForChildren(), isClean());
+                    attributes_ = null;
+                }
+                return attributesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Link)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Link)
+        private static final context.ContextOuterClass.Link DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Link();
+        }
+
+        public static context.ContextOuterClass.Link getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Link> PARSER = new com.google.protobuf.AbstractParser<Link>() {
+
+            @java.lang.Override
+            public Link 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<Link> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Link> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Link getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        context.ContextOuterClass.LinkId getLinkIds(int index);
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        int getLinkIdsCount();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.LinkIdList}
+     */
+    public static final class LinkIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkIdList)
+    LinkIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use LinkIdList.newBuilder() to construct.
+        private LinkIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private LinkIdList() {
+            linkIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new LinkIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
+        }
+
+        public static final int LINK_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+            return linkIds_;
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+            return linkIds_;
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getLinkIdsCount() {
+            return linkIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkIds(int index) {
+            return linkIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+            return linkIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < linkIds_.size(); i++) {
+                output.writeMessage(1, linkIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < linkIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
+            }
+            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 context.ContextOuterClass.LinkIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
+            if (!getLinkIdsList().equals(other.getLinkIdsList()))
+                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 (getLinkIdsCount() > 0) {
+                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.LinkIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.LinkIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkIdList)
+        context.ContextOuterClass.LinkIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                } else {
+                    linkIds_ = null;
+                    linkIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.LinkIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkIdList build() {
+                context.ContextOuterClass.LinkIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkIdList buildPartial() {
+                context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
+                if (linkIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.linkIds_ = linkIds_;
+                } else {
+                    result.linkIds_ = linkIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.LinkIdList) {
+                    return mergeFrom((context.ContextOuterClass.LinkIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.LinkIdList other) {
+                if (other == context.ContextOuterClass.LinkIdList.getDefaultInstance())
+                    return this;
+                if (linkIdsBuilder_ == null) {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIds_.isEmpty()) {
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureLinkIdsIsMutable();
+                            linkIds_.addAll(other.linkIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIdsBuilder_.isEmpty()) {
+                            linkIdsBuilder_.dispose();
+                            linkIdsBuilder_ = null;
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
+                        } else {
+                            linkIdsBuilder_.addAllMessages(other.linkIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
+
+            private void ensureLinkIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+                if (linkIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                } else {
+                    return linkIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public int getLinkIdsCount() {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.size();
+                } else {
+                    return linkIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public context.ContextOuterClass.LinkId getLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder clearLinkIds() {
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public Builder removeLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.remove(index);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+                if (linkIdsBuilder_ != null) {
+                    return linkIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
+                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.LinkId link_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
+                return getLinkIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
+                if (linkIdsBuilder_ == null) {
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    linkIds_ = null;
+                }
+                return linkIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.LinkIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.LinkIdList)
+        private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
+        }
+
+        public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<LinkIdList> PARSER = new com.google.protobuf.AbstractParser<LinkIdList>() {
+
+            @java.lang.Override
+            public LinkIdList 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<LinkIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LinkIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Link> getLinksList();
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        context.ContextOuterClass.Link getLinks(int index);
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        int getLinksCount();
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList();
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.LinkList}
+     */
+    public static final class LinkList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkList)
+    LinkListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use LinkList.newBuilder() to construct.
+        private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private LinkList() {
+            links_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new LinkList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
+        }
+
+        public static final int LINKS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Link> links_;
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+            return links_;
+        }
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
+            return links_;
+        }
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        @java.lang.Override
+        public int getLinksCount() {
+            return links_.size();
+        }
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Link getLinks(int index) {
+            return links_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Link links = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
+            return links_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < links_.size(); i++) {
+                output.writeMessage(1, links_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < links_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
+            }
+            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 context.ContextOuterClass.LinkList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
+            if (!getLinksList().equals(other.getLinksList()))
+                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 (getLinksCount() > 0) {
+                hash = (37 * hash) + LINKS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinksList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.LinkList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkList)
+        context.ContextOuterClass.LinkListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.LinkList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (linksBuilder_ == null) {
+                    links_ = java.util.Collections.emptyList();
+                } else {
+                    links_ = null;
+                    linksBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
+                return context.ContextOuterClass.LinkList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkList build() {
+                context.ContextOuterClass.LinkList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkList buildPartial() {
+                context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
+                if (linksBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        links_ = java.util.Collections.unmodifiableList(links_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.links_ = links_;
+                } else {
+                    result.links_ = linksBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.LinkList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.LinkList) {
+                    return mergeFrom((context.ContextOuterClass.LinkList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.LinkList other) {
+                if (other == context.ContextOuterClass.LinkList.getDefaultInstance())
+                    return this;
+                if (linksBuilder_ == null) {
+                    if (!other.links_.isEmpty()) {
+                        if (links_.isEmpty()) {
+                            links_ = other.links_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureLinksIsMutable();
+                            links_.addAll(other.links_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.links_.isEmpty()) {
+                        if (linksBuilder_.isEmpty()) {
+                            linksBuilder_.dispose();
+                            linksBuilder_ = null;
+                            links_ = other.links_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
+                        } else {
+                            linksBuilder_.addAllMessages(other.links_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
+                                    if (linksBuilder_ == null) {
+                                        ensureLinksIsMutable();
+                                        links_.add(m);
+                                    } else {
+                                        linksBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();
+
+            private void ensureLinksIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Link> getLinksList() {
+                if (linksBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(links_);
+                } else {
+                    return linksBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public int getLinksCount() {
+                if (linksBuilder_ == null) {
+                    return links_.size();
+                } else {
+                    return linksBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public context.ContextOuterClass.Link getLinks(int index) {
+                if (linksBuilder_ == null) {
+                    return links_.get(index);
+                } else {
+                    return linksBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder setLinks(int index, context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.set(index, value);
+                    onChanged();
+                } else {
+                    linksBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder setLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder addLinks(context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.add(value);
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder addLinks(int index, context.ContextOuterClass.Link value) {
+                if (linksBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinksIsMutable();
+                    links_.add(index, value);
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder addLinks(context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder addLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linksBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder addAllLinks(java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, links_);
+                    onChanged();
+                } else {
+                    linksBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder clearLinks() {
+                if (linksBuilder_ == null) {
+                    links_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    linksBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public Builder removeLinks(int index) {
+                if (linksBuilder_ == null) {
+                    ensureLinksIsMutable();
+                    links_.remove(index);
+                    onChanged();
+                } else {
+                    linksBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public context.ContextOuterClass.Link.Builder getLinksBuilder(int index) {
+                return getLinksFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
+                if (linksBuilder_ == null) {
+                    return links_.get(index);
+                } else {
+                    return linksBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
+                if (linksBuilder_ != null) {
+                    return linksBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(links_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public context.ContextOuterClass.Link.Builder addLinksBuilder() {
+                return getLinksFieldBuilder().addBuilder(context.ContextOuterClass.Link.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public context.ContextOuterClass.Link.Builder addLinksBuilder(int index) {
+                return getLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.Link.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Link links = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Link.Builder> getLinksBuilderList() {
+                return getLinksFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
+                if (linksBuilder_ == null) {
+                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    links_ = null;
+                }
+                return linksBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.LinkList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.LinkList)
+        private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
+        }
+
+        public static context.ContextOuterClass.LinkList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<LinkList> PARSER = new com.google.protobuf.AbstractParser<LinkList>() {
+
+            @java.lang.Override
+            public LinkList 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<LinkList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LinkList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface LinkEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         * @return Whether the linkId field is set.
+         */
+        boolean hasLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         * @return The linkId.
+         */
+        context.ContextOuterClass.LinkId getLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.LinkEvent}
+     */
+    public static final class LinkEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkEvent)
+    LinkEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use LinkEvent.newBuilder() to construct.
+        private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private LinkEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new LinkEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int LINK_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.LinkId linkId_;
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         * @return Whether the linkId field is set.
+         */
+        @java.lang.Override
+        public boolean hasLinkId() {
+            return linkId_ != null;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         * @return The linkId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkId() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (linkId_ != null) {
+                output.writeMessage(2, getLinkId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (linkId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
+            }
+            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 context.ContextOuterClass.LinkEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasLinkId() != other.hasLinkId())
+                return false;
+            if (hasLinkId()) {
+                if (!getLinkId().equals(other.getLinkId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasLinkId()) {
+                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.LinkEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkEvent)
+        context.ContextOuterClass.LinkEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.LinkEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkEvent build() {
+                context.ContextOuterClass.LinkEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.LinkEvent buildPartial() {
+                context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.LinkEvent) {
+                    return mergeFrom((context.ContextOuterClass.LinkEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.LinkEvent other) {
+                if (other == context.ContextOuterClass.LinkEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasLinkId()) {
+                    mergeLinkId(other.getLinkId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.LinkId linkId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             * @return Whether the linkId field is set.
+             */
+            public boolean hasLinkId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             * @return The linkId.
+             */
+            public context.ContextOuterClass.LinkId getLinkId() {
+                if (linkIdBuilder_ == null) {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                } else {
+                    return linkIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    linkId_ = value;
+                } else {
+                    linkIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdBuilder_ == null) {
+                    linkId_ = builderForValue.build();
+                } else {
+                    linkIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
+                    } else {
+                        linkId_ = value;
+                    }
+                } else {
+                    linkIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public Builder clearLinkId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getLinkIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+                if (linkIdBuilder_ != null) {
+                    return linkIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
+                if (linkIdBuilder_ == null) {
+                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
+                    linkId_ = null;
+                }
+                return linkIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.LinkEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.LinkEvent)
+        private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
+        }
+
+        public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<LinkEvent> PARSER = new com.google.protobuf.AbstractParser<LinkEvent>() {
+
+            @java.lang.Override
+            public LinkEvent 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<LinkEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<LinkEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         * @return Whether the serviceUuid field is set.
+         */
+        boolean hasServiceUuid();
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         * @return The serviceUuid.
+         */
+        context.ContextOuterClass.Uuid getServiceUuid();
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Service -------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.ServiceId}
+     */
+    public static final class ServiceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceId)
+    ServiceIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceId.newBuilder() to construct.
+        private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        public static final int SERVICE_UUID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.Uuid serviceUuid_;
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         * @return Whether the serviceUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceUuid() {
+            return serviceUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         * @return The serviceUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getServiceUuid() {
+            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid service_uuid = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
+            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+        }
+
+        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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (serviceUuid_ != null) {
+                output.writeMessage(2, getServiceUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (serviceUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
+            }
+            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 context.ContextOuterClass.ServiceId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (hasServiceUuid() != other.hasServiceUuid())
+                return false;
+            if (hasServiceUuid()) {
+                if (!getServiceUuid().equals(other.getServiceUuid()))
+                    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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            if (hasServiceUuid()) {
+                hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Service -------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.ServiceId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceId)
+        context.ContextOuterClass.ServiceIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
+                    serviceUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceId build() {
+                context.ContextOuterClass.ServiceId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceId buildPartial() {
+                context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceId) {
+                    return mergeFrom((context.ContextOuterClass.ServiceId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceId other) {
+                if (other == context.ContextOuterClass.ServiceId.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.hasServiceUuid()) {
+                    mergeServiceUuid(other.getServiceUuid());
+                }
+                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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private context.ContextOuterClass.Uuid serviceUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             * @return Whether the serviceUuid field is set.
+             */
+            public boolean hasServiceUuid() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             * @return The serviceUuid.
+             */
+            public context.ContextOuterClass.Uuid getServiceUuid() {
+                if (serviceUuidBuilder_ == null) {
+                    return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+                } else {
+                    return serviceUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
+                if (serviceUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceUuid_ = value;
+                } else {
+                    serviceUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuid_ = builderForValue.build();
+                } else {
+                    serviceUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
+                if (serviceUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getServiceUuidBuilder().mergeFrom(value);
+                    } else {
+                        serviceUuid_ = value;
+                    }
+                } else {
+                    serviceUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public Builder clearServiceUuid() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceUuid_ = null;
+                if (serviceUuidBuilder_ != null) {
+                    serviceUuidBuilder_.dispose();
+                    serviceUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getServiceUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
+                if (serviceUuidBuilder_ != null) {
+                    return serviceUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid service_uuid = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getServiceUuidFieldBuilder() {
+                if (serviceUuidBuilder_ == null) {
+                    serviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getServiceUuid(), getParentForChildren(), isClean());
+                    serviceUuid_ = null;
+                }
+                return serviceUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceId)
+        private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
+        }
+
+        public static context.ContextOuterClass.ServiceId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceId> PARSER = new com.google.protobuf.AbstractParser<ServiceId>() {
+
+            @java.lang.Override
+            public ServiceId 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<ServiceId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Service)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         * @return Whether the serviceId field is set.
+         */
+        boolean hasServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         * @return The serviceId.
+         */
+        context.ContextOuterClass.ServiceId getServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>.context.ServiceTypeEnum service_type = 3;</code>
+         * @return The enum numeric value on the wire for serviceType.
+         */
+        int getServiceTypeValue();
+
+        /**
+         * <code>.context.ServiceTypeEnum service_type = 3;</code>
+         * @return The serviceType.
+         */
+        context.ContextOuterClass.ServiceTypeEnum getServiceType();
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList();
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        context.ContextOuterClass.EndPointId getServiceEndpointIds(int index);
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        int getServiceEndpointIdsCount();
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList();
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        context.ContextOuterClass.Constraint getServiceConstraints(int index);
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        int getServiceConstraintsCount();
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList();
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index);
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         * @return Whether the serviceStatus field is set.
+         */
+        boolean hasServiceStatus();
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         * @return The serviceStatus.
+         */
+        context.ContextOuterClass.ServiceStatus getServiceStatus();
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         */
+        context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder();
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         * @return Whether the serviceConfig field is set.
+         */
+        boolean hasServiceConfig();
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         * @return The serviceConfig.
+         */
+        context.ContextOuterClass.ServiceConfig getServiceConfig();
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         */
+        context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder();
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Service}
+     */
+    public static final class Service extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Service)
+    ServiceOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Service.newBuilder() to construct.
+        private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Service() {
+            name_ = "";
+            serviceType_ = 0;
+            serviceEndpointIds_ = java.util.Collections.emptyList();
+            serviceConstraints_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Service();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Service_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
+        }
+
+        public static final int SERVICE_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ServiceId serviceId_;
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         * @return Whether the serviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceId() {
+            return serviceId_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         * @return The serviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceId() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 SERVICE_TYPE_FIELD_NUMBER = 3;
+
+        private int serviceType_ = 0;
+
+        /**
+         * <code>.context.ServiceTypeEnum service_type = 3;</code>
+         * @return The enum numeric value on the wire for serviceType.
+         */
+        @java.lang.Override
+        public int getServiceTypeValue() {
+            return serviceType_;
+        }
+
+        /**
+         * <code>.context.ServiceTypeEnum service_type = 3;</code>
+         * @return The serviceType.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
+            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+            return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
+            return serviceEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList() {
+            return serviceEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        @java.lang.Override
+        public int getServiceEndpointIdsCount() {
+            return serviceEndpointIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
+            return serviceEndpointIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index) {
+            return serviceEndpointIds_.get(index);
+        }
+
+        public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
+            return serviceConstraints_;
+        }
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList() {
+            return serviceConstraints_;
+        }
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        @java.lang.Override
+        public int getServiceConstraintsCount() {
+            return serviceConstraints_.size();
+        }
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
+            return serviceConstraints_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Constraint service_constraints = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index) {
+            return serviceConstraints_.get(index);
+        }
+
+        public static final int SERVICE_STATUS_FIELD_NUMBER = 6;
+
+        private context.ContextOuterClass.ServiceStatus serviceStatus_;
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         * @return Whether the serviceStatus field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceStatus() {
+            return serviceStatus_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         * @return The serviceStatus.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceStatus getServiceStatus() {
+            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+        }
+
+        /**
+         * <code>.context.ServiceStatus service_status = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
+            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+        }
+
+        public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
+
+        private context.ContextOuterClass.ServiceConfig serviceConfig_;
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         * @return Whether the serviceConfig field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceConfig() {
+            return serviceConfig_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         * @return The serviceConfig.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceConfig getServiceConfig() {
+            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+        }
+
+        /**
+         * <code>.context.ServiceConfig service_config = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
+            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+        }
+
+        public static final int TIMESTAMP_FIELD_NUMBER = 8;
+
+        private context.ContextOuterClass.Timestamp timestamp_;
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        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 (serviceId_ != null) {
+                output.writeMessage(1, getServiceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
+                output.writeEnum(3, serviceType_);
+            }
+            for (int i = 0; i < serviceEndpointIds_.size(); i++) {
+                output.writeMessage(4, serviceEndpointIds_.get(i));
+            }
+            for (int i = 0; i < serviceConstraints_.size(); i++) {
+                output.writeMessage(5, serviceConstraints_.get(i));
+            }
+            if (serviceStatus_ != null) {
+                output.writeMessage(6, getServiceStatus());
+            }
+            if (serviceConfig_ != null) {
+                output.writeMessage(7, getServiceConfig());
+            }
+            if (timestamp_ != null) {
+                output.writeMessage(8, getTimestamp());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (serviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, serviceType_);
+            }
+            for (int i = 0; i < serviceEndpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, serviceEndpointIds_.get(i));
+            }
+            for (int i = 0; i < serviceConstraints_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, serviceConstraints_.get(i));
+            }
+            if (serviceStatus_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getServiceStatus());
+            }
+            if (serviceConfig_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getServiceConfig());
+            }
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
+            }
+            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 context.ContextOuterClass.Service)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;
+            if (hasServiceId() != other.hasServiceId())
+                return false;
+            if (hasServiceId()) {
+                if (!getServiceId().equals(other.getServiceId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (serviceType_ != other.serviceType_)
+                return false;
+            if (!getServiceEndpointIdsList().equals(other.getServiceEndpointIdsList()))
+                return false;
+            if (!getServiceConstraintsList().equals(other.getServiceConstraintsList()))
+                return false;
+            if (hasServiceStatus() != other.hasServiceStatus())
+                return false;
+            if (hasServiceStatus()) {
+                if (!getServiceStatus().equals(other.getServiceStatus()))
+                    return false;
+            }
+            if (hasServiceConfig() != other.hasServiceConfig())
+                return false;
+            if (hasServiceConfig()) {
+                if (!getServiceConfig().equals(other.getServiceConfig()))
+                    return false;
+            }
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    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 (hasServiceId()) {
+                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            hash = (37 * hash) + SERVICE_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + serviceType_;
+            if (getServiceEndpointIdsCount() > 0) {
+                hash = (37 * hash) + SERVICE_ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceEndpointIdsList().hashCode();
+            }
+            if (getServiceConstraintsCount() > 0) {
+                hash = (37 * hash) + SERVICE_CONSTRAINTS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceConstraintsList().hashCode();
+            }
+            if (hasServiceStatus()) {
+                hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceStatus().hashCode();
+            }
+            if (hasServiceConfig()) {
+                hash = (37 * hash) + SERVICE_CONFIG_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceConfig().hashCode();
+            }
+            if (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Service}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Service)
+        context.ContextOuterClass.ServiceOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Service_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Service.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                name_ = "";
+                serviceType_ = 0;
+                if (serviceEndpointIdsBuilder_ == null) {
+                    serviceEndpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    serviceEndpointIds_ = null;
+                    serviceEndpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                if (serviceConstraintsBuilder_ == null) {
+                    serviceConstraints_ = java.util.Collections.emptyList();
+                } else {
+                    serviceConstraints_ = null;
+                    serviceConstraintsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000010);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
+                    serviceStatusBuilder_ = null;
+                }
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
+                    serviceConfigBuilder_ = null;
+                }
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Service_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Service getDefaultInstanceForType() {
+                return context.ContextOuterClass.Service.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Service build() {
+                context.ContextOuterClass.Service result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Service buildPartial() {
+                context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.serviceEndpointIds_ = serviceEndpointIds_;
+                } else {
+                    result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
+                }
+                if (serviceConstraintsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
+                        serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
+                        bitField0_ = (bitField0_ & ~0x00000010);
+                    }
+                    result.serviceConstraints_ = serviceConstraints_;
+                } else {
+                    result.serviceConstraints_ = serviceConstraintsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Service result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.serviceType_ = serviceType_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Service) {
+                    return mergeFrom((context.ContextOuterClass.Service) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Service other) {
+                if (other == context.ContextOuterClass.Service.getDefaultInstance())
+                    return this;
+                if (other.hasServiceId()) {
+                    mergeServiceId(other.getServiceId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.serviceType_ != 0) {
+                    setServiceTypeValue(other.getServiceTypeValue());
+                }
+                if (serviceEndpointIdsBuilder_ == null) {
+                    if (!other.serviceEndpointIds_.isEmpty()) {
+                        if (serviceEndpointIds_.isEmpty()) {
+                            serviceEndpointIds_ = other.serviceEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureServiceEndpointIdsIsMutable();
+                            serviceEndpointIds_.addAll(other.serviceEndpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.serviceEndpointIds_.isEmpty()) {
+                        if (serviceEndpointIdsBuilder_.isEmpty()) {
+                            serviceEndpointIdsBuilder_.dispose();
+                            serviceEndpointIdsBuilder_ = null;
+                            serviceEndpointIds_ = other.serviceEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
+                        } else {
+                            serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
+                        }
+                    }
+                }
+                if (serviceConstraintsBuilder_ == null) {
+                    if (!other.serviceConstraints_.isEmpty()) {
+                        if (serviceConstraints_.isEmpty()) {
+                            serviceConstraints_ = other.serviceConstraints_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                        } else {
+                            ensureServiceConstraintsIsMutable();
+                            serviceConstraints_.addAll(other.serviceConstraints_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.serviceConstraints_.isEmpty()) {
+                        if (serviceConstraintsBuilder_.isEmpty()) {
+                            serviceConstraintsBuilder_.dispose();
+                            serviceConstraintsBuilder_ = null;
+                            serviceConstraints_ = other.serviceConstraints_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                            serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
+                        } else {
+                            serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
+                        }
+                    }
+                }
+                if (other.hasServiceStatus()) {
+                    mergeServiceStatus(other.getServiceStatus());
+                }
+                if (other.hasServiceConfig()) {
+                    mergeServiceConfig(other.getServiceConfig());
+                }
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                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(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    serviceType_ = input.readEnum();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (serviceEndpointIdsBuilder_ == null) {
+                                        ensureServiceEndpointIdsIsMutable();
+                                        serviceEndpointIds_.add(m);
+                                    } else {
+                                        serviceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (serviceConstraintsBuilder_ == null) {
+                                        ensureServiceConstraintsIsMutable();
+                                        serviceConstraints_.add(m);
+                                    } else {
+                                        serviceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ServiceId serviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             * @return Whether the serviceId field is set.
+             */
+            public boolean hasServiceId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             * @return The serviceId.
+             */
+            public context.ContextOuterClass.ServiceId getServiceId() {
+                if (serviceIdBuilder_ == null) {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                } else {
+                    return serviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceId_ = value;
+                } else {
+                    serviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = builderForValue.build();
+                } else {
+                    serviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
+                    } else {
+                        serviceId_ = value;
+                    }
+                } else {
+                    serviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public Builder clearServiceId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getServiceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+                if (serviceIdBuilder_ != null) {
+                    return serviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
+                if (serviceIdBuilder_ == null) {
+                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
+                    serviceId_ = null;
+                }
+                return serviceIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private int serviceType_ = 0;
+
+            /**
+             * <code>.context.ServiceTypeEnum service_type = 3;</code>
+             * @return The enum numeric value on the wire for serviceType.
+             */
+            @java.lang.Override
+            public int getServiceTypeValue() {
+                return serviceType_;
+            }
+
+            /**
+             * <code>.context.ServiceTypeEnum service_type = 3;</code>
+             * @param value The enum numeric value on the wire for serviceType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setServiceTypeValue(int value) {
+                serviceType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceTypeEnum service_type = 3;</code>
+             * @return The serviceType.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
+                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
+                return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.context.ServiceTypeEnum service_type = 3;</code>
+             * @param value The serviceType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setServiceType(context.ContextOuterClass.ServiceTypeEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000004;
+                serviceType_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceTypeEnum service_type = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearServiceType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                serviceType_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ = java.util.Collections.emptyList();
+
+            private void ensureServiceEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> serviceEndpointIdsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(serviceEndpointIds_);
+                } else {
+                    return serviceEndpointIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public int getServiceEndpointIdsCount() {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    return serviceEndpointIds_.size();
+                } else {
+                    return serviceEndpointIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    return serviceEndpointIds_.get(index);
+                } else {
+                    return serviceEndpointIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder setServiceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder setServiceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.add(value);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder addServiceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder addServiceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder addAllServiceEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    ensureServiceEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceEndpointIds_);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder clearServiceEndpointIds() {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    serviceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public Builder removeServiceEndpointIds(int index) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    ensureServiceEndpointIdsIsMutable();
+                    serviceEndpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    serviceEndpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(int index) {
+                return getServiceEndpointIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index) {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    return serviceEndpointIds_.get(index);
+                } else {
+                    return serviceEndpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList() {
+                if (serviceEndpointIdsBuilder_ != null) {
+                    return serviceEndpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(serviceEndpointIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
+                return getServiceEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder(int index) {
+                return getServiceEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getServiceEndpointIdsBuilderList() {
+                return getServiceEndpointIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsFieldBuilder() {
+                if (serviceEndpointIdsBuilder_ == null) {
+                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    serviceEndpointIds_ = null;
+                }
+                return serviceEndpointIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ = java.util.Collections.emptyList();
+
+            private void ensureServiceConstraintsIsMutable() {
+                if (!((bitField0_ & 0x00000010) != 0)) {
+                    serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
+                    bitField0_ |= 0x00000010;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
+                if (serviceConstraintsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(serviceConstraints_);
+                } else {
+                    return serviceConstraintsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public int getServiceConstraintsCount() {
+                if (serviceConstraintsBuilder_ == null) {
+                    return serviceConstraints_.size();
+                } else {
+                    return serviceConstraintsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
+                if (serviceConstraintsBuilder_ == null) {
+                    return serviceConstraints_.get(index);
+                } else {
+                    return serviceConstraintsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder setServiceConstraints(int index, context.ContextOuterClass.Constraint value) {
+                if (serviceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.set(index, value);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder setServiceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (serviceConstraintsBuilder_ == null) {
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder addServiceConstraints(context.ContextOuterClass.Constraint value) {
+                if (serviceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.add(value);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder addServiceConstraints(int index, context.ContextOuterClass.Constraint value) {
+                if (serviceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.add(index, value);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder addServiceConstraints(context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (serviceConstraintsBuilder_ == null) {
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder addServiceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (serviceConstraintsBuilder_ == null) {
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder addAllServiceConstraints(java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
+                if (serviceConstraintsBuilder_ == null) {
+                    ensureServiceConstraintsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceConstraints_);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder clearServiceConstraints() {
+                if (serviceConstraintsBuilder_ == null) {
+                    serviceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public Builder removeServiceConstraints(int index) {
+                if (serviceConstraintsBuilder_ == null) {
+                    ensureServiceConstraintsIsMutable();
+                    serviceConstraints_.remove(index);
+                    onChanged();
+                } else {
+                    serviceConstraintsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(int index) {
+                return getServiceConstraintsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index) {
+                if (serviceConstraintsBuilder_ == null) {
+                    return serviceConstraints_.get(index);
+                } else {
+                    return serviceConstraintsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList() {
+                if (serviceConstraintsBuilder_ != null) {
+                    return serviceConstraintsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(serviceConstraints_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
+                return getServiceConstraintsFieldBuilder().addBuilder(context.ContextOuterClass.Constraint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(int index) {
+                return getServiceConstraintsFieldBuilder().addBuilder(index, context.ContextOuterClass.Constraint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Constraint service_constraints = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Constraint.Builder> getServiceConstraintsBuilderList() {
+                return getServiceConstraintsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsFieldBuilder() {
+                if (serviceConstraintsBuilder_ == null) {
+                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    serviceConstraints_ = null;
+                }
+                return serviceConstraintsBuilder_;
+            }
+
+            private context.ContextOuterClass.ServiceStatus serviceStatus_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> serviceStatusBuilder_;
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             * @return Whether the serviceStatus field is set.
+             */
+            public boolean hasServiceStatus() {
+                return ((bitField0_ & 0x00000020) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             * @return The serviceStatus.
+             */
+            public context.ContextOuterClass.ServiceStatus getServiceStatus() {
+                if (serviceStatusBuilder_ == null) {
+                    return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+                } else {
+                    return serviceStatusBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
+                if (serviceStatusBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceStatus_ = value;
+                } else {
+                    serviceStatusBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatus_ = builderForValue.build();
+                } else {
+                    serviceStatusBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
+                if (serviceStatusBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
+                        getServiceStatusBuilder().mergeFrom(value);
+                    } else {
+                        serviceStatus_ = value;
+                    }
+                } else {
+                    serviceStatusBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public Builder clearServiceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                serviceStatus_ = null;
+                if (serviceStatusBuilder_ != null) {
+                    serviceStatusBuilder_.dispose();
+                    serviceStatusBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return getServiceStatusFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
+                if (serviceStatusBuilder_ != null) {
+                    return serviceStatusBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceStatus service_status = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> getServiceStatusFieldBuilder() {
+                if (serviceStatusBuilder_ == null) {
+                    serviceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder>(getServiceStatus(), getParentForChildren(), isClean());
+                    serviceStatus_ = null;
+                }
+                return serviceStatusBuilder_;
+            }
+
+            private context.ContextOuterClass.ServiceConfig serviceConfig_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> serviceConfigBuilder_;
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             * @return Whether the serviceConfig field is set.
+             */
+            public boolean hasServiceConfig() {
+                return ((bitField0_ & 0x00000040) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             * @return The serviceConfig.
+             */
+            public context.ContextOuterClass.ServiceConfig getServiceConfig() {
+                if (serviceConfigBuilder_ == null) {
+                    return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+                } else {
+                    return serviceConfigBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
+                if (serviceConfigBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceConfig_ = value;
+                } else {
+                    serviceConfigBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfig_ = builderForValue.build();
+                } else {
+                    serviceConfigBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
+                if (serviceConfigBuilder_ == null) {
+                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
+                        getServiceConfigBuilder().mergeFrom(value);
+                    } else {
+                        serviceConfig_ = value;
+                    }
+                } else {
+                    serviceConfigBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public Builder clearServiceConfig() {
+                bitField0_ = (bitField0_ & ~0x00000040);
+                serviceConfig_ = null;
+                if (serviceConfigBuilder_ != null) {
+                    serviceConfigBuilder_.dispose();
+                    serviceConfigBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return getServiceConfigFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
+                if (serviceConfigBuilder_ != null) {
+                    return serviceConfigBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceConfig service_config = 7;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> getServiceConfigFieldBuilder() {
+                if (serviceConfigBuilder_ == null) {
+                    serviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder>(getServiceConfig(), getParentForChildren(), isClean());
+                    serviceConfig_ = null;
+                }
+                return serviceConfigBuilder_;
+            }
+
+            private context.ContextOuterClass.Timestamp timestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000080) != 0);
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000080);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 8;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Service)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Service)
+        private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
+        }
+
+        public static context.ContextOuterClass.Service getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Service> PARSER = new com.google.protobuf.AbstractParser<Service>() {
+
+            @java.lang.Override
+            public Service 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<Service> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Service> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Service getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceStatusOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ServiceStatusEnum service_status = 1;</code>
+         * @return The enum numeric value on the wire for serviceStatus.
+         */
+        int getServiceStatusValue();
+
+        /**
+         * <code>.context.ServiceStatusEnum service_status = 1;</code>
+         * @return The serviceStatus.
+         */
+        context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceStatus}
+     */
+    public static final class ServiceStatus extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceStatus)
+    ServiceStatusOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceStatus.newBuilder() to construct.
+        private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceStatus() {
+            serviceStatus_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceStatus();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
+        }
+
+        public static final int SERVICE_STATUS_FIELD_NUMBER = 1;
+
+        private int serviceStatus_ = 0;
+
+        /**
+         * <code>.context.ServiceStatusEnum service_status = 1;</code>
+         * @return The enum numeric value on the wire for serviceStatus.
+         */
+        @java.lang.Override
+        public int getServiceStatusValue() {
+            return serviceStatus_;
+        }
+
+        /**
+         * <code>.context.ServiceStatusEnum service_status = 1;</code>
+         * @return The serviceStatus.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
+            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+            return result == null ? context.ContextOuterClass.ServiceStatusEnum.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 (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
+                output.writeEnum(1, serviceStatus_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
+            }
+            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 context.ContextOuterClass.ServiceStatus)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
+            if (serviceStatus_ != other.serviceStatus_)
+                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) + SERVICE_STATUS_FIELD_NUMBER;
+            hash = (53 * hash) + serviceStatus_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceStatus}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceStatus)
+        context.ContextOuterClass.ServiceStatusOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                serviceStatus_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceStatus build() {
+                context.ContextOuterClass.ServiceStatus result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceStatus buildPartial() {
+                context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceStatus_ = serviceStatus_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceStatus) {
+                    return mergeFrom((context.ContextOuterClass.ServiceStatus) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceStatus other) {
+                if (other == context.ContextOuterClass.ServiceStatus.getDefaultInstance())
+                    return this;
+                if (other.serviceStatus_ != 0) {
+                    setServiceStatusValue(other.getServiceStatusValue());
+                }
+                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:
+                                {
+                                    serviceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int serviceStatus_ = 0;
+
+            /**
+             * <code>.context.ServiceStatusEnum service_status = 1;</code>
+             * @return The enum numeric value on the wire for serviceStatus.
+             */
+            @java.lang.Override
+            public int getServiceStatusValue() {
+                return serviceStatus_;
+            }
+
+            /**
+             * <code>.context.ServiceStatusEnum service_status = 1;</code>
+             * @param value The enum numeric value on the wire for serviceStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setServiceStatusValue(int value) {
+                serviceStatus_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatusEnum service_status = 1;</code>
+             * @return The serviceStatus.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
+                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
+                return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.context.ServiceStatusEnum service_status = 1;</code>
+             * @param value The serviceStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                serviceStatus_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceStatusEnum service_status = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearServiceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceStatus_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceStatus)
+        private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
+        }
+
+        public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceStatus> PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
+
+            @java.lang.Override
+            public ServiceStatus 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<ServiceStatus> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRule getConfigRules(int index);
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        int getConfigRulesCount();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceConfig}
+     */
+    public static final class ServiceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceConfig)
+    ServiceConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceConfig.newBuilder() to construct.
+        private ServiceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceConfig() {
+            configRules_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceConfig();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
+        }
+
+        public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public int getConfigRulesCount() {
+            return configRules_.size();
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+            return configRules_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+            return configRules_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < configRules_.size(); i++) {
+                output.writeMessage(1, configRules_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < configRules_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
+            }
+            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 context.ContextOuterClass.ServiceConfig)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
+            if (!getConfigRulesList().equals(other.getConfigRulesList()))
+                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 (getConfigRulesCount() > 0) {
+                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+                hash = (53 * hash) + getConfigRulesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceConfig)
+        context.ContextOuterClass.ServiceConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                } else {
+                    configRules_ = null;
+                    configRulesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceConfig build() {
+                context.ContextOuterClass.ServiceConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceConfig buildPartial() {
+                context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
+                if (configRulesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.configRules_ = configRules_;
+                } else {
+                    result.configRules_ = configRulesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceConfig) {
+                    return mergeFrom((context.ContextOuterClass.ServiceConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceConfig other) {
+                if (other == context.ContextOuterClass.ServiceConfig.getDefaultInstance())
+                    return this;
+                if (configRulesBuilder_ == null) {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRules_.isEmpty()) {
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureConfigRulesIsMutable();
+                            configRules_.addAll(other.configRules_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRulesBuilder_.isEmpty()) {
+                            configRulesBuilder_.dispose();
+                            configRulesBuilder_ = null;
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
+                        } else {
+                            configRulesBuilder_.addAllMessages(other.configRules_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();
+
+            private void ensureConfigRulesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+                if (configRulesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                } else {
+                    return configRulesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public int getConfigRulesCount() {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.size();
+                } else {
+                    return configRulesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder clearConfigRules() {
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder removeConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.remove(index);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+                if (configRulesBuilder_ != null) {
+                    return configRulesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
+                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
+                return getConfigRulesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
+                if (configRulesBuilder_ == null) {
+                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    configRules_ = null;
+                }
+                return configRulesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceConfig)
+        private static final context.ContextOuterClass.ServiceConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfig();
+        }
+
+        public static context.ContextOuterClass.ServiceConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceConfig> PARSER = new com.google.protobuf.AbstractParser<ServiceConfig>() {
+
+            @java.lang.Override
+            public ServiceConfig 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<ServiceConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        context.ContextOuterClass.ServiceId getServiceIds(int index);
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        int getServiceIdsCount();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceIdList}
+     */
+    public static final class ServiceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceIdList)
+    ServiceIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceIdList.newBuilder() to construct.
+        private ServiceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceIdList() {
+            serviceIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
+        }
+
+        public static final int SERVICE_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
+            return serviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
+            return serviceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getServiceIdsCount() {
+            return serviceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceIds(int index) {
+            return serviceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ServiceId service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
+            return serviceIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < serviceIds_.size(); i++) {
+                output.writeMessage(1, serviceIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < serviceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
+            }
+            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 context.ContextOuterClass.ServiceIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
+            if (!getServiceIdsList().equals(other.getServiceIdsList()))
+                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 (getServiceIdsCount() > 0) {
+                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceIdList)
+        context.ContextOuterClass.ServiceIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = java.util.Collections.emptyList();
+                } else {
+                    serviceIds_ = null;
+                    serviceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceIdList build() {
+                context.ContextOuterClass.ServiceIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceIdList buildPartial() {
+                context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
+                if (serviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.serviceIds_ = serviceIds_;
+                } else {
+                    result.serviceIds_ = serviceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceIdList) {
+                    return mergeFrom((context.ContextOuterClass.ServiceIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceIdList other) {
+                if (other == context.ContextOuterClass.ServiceIdList.getDefaultInstance())
+                    return this;
+                if (serviceIdsBuilder_ == null) {
+                    if (!other.serviceIds_.isEmpty()) {
+                        if (serviceIds_.isEmpty()) {
+                            serviceIds_ = other.serviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureServiceIdsIsMutable();
+                            serviceIds_.addAll(other.serviceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.serviceIds_.isEmpty()) {
+                        if (serviceIdsBuilder_.isEmpty()) {
+                            serviceIdsBuilder_.dispose();
+                            serviceIdsBuilder_ = null;
+                            serviceIds_ = other.serviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
+                        } else {
+                            serviceIdsBuilder_.addAllMessages(other.serviceIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (serviceIdsBuilder_ == null) {
+                                        ensureServiceIdsIsMutable();
+                                        serviceIds_.add(m);
+                                    } else {
+                                        serviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();
+
+            private void ensureServiceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
+                if (serviceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(serviceIds_);
+                } else {
+                    return serviceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public int getServiceIdsCount() {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.size();
+                } else {
+                    return serviceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceId getServiceIds(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.get(index);
+                } else {
+                    return serviceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder addServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder addAllServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceIds_);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder clearServiceIds() {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public Builder removeServiceIds(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    ensureServiceIdsIsMutable();
+                    serviceIds_.remove(index);
+                    onChanged();
+                } else {
+                    serviceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(int index) {
+                return getServiceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_.get(index);
+                } else {
+                    return serviceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
+                if (serviceIdsBuilder_ != null) {
+                    return serviceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(serviceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
+                return getServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(int index) {
+                return getServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId service_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getServiceIdsBuilderList() {
+                return getServiceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    serviceIds_ = null;
+                }
+                return serviceIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceIdList)
+        private static final context.ContextOuterClass.ServiceIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceIdList();
+        }
+
+        public static context.ContextOuterClass.ServiceIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceIdList> PARSER = new com.google.protobuf.AbstractParser<ServiceIdList>() {
+
+            @java.lang.Override
+            public ServiceIdList 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<ServiceIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Service> getServicesList();
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        context.ContextOuterClass.Service getServices(int index);
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        int getServicesCount();
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList();
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceList}
+     */
+    public static final class ServiceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceList)
+    ServiceListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceList.newBuilder() to construct.
+        private ServiceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceList() {
+            services_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
+        }
+
+        public static final int SERVICES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Service> services_;
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Service> getServicesList() {
+            return services_;
+        }
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList() {
+            return services_;
+        }
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        @java.lang.Override
+        public int getServicesCount() {
+            return services_.size();
+        }
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Service getServices(int index) {
+            return services_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Service services = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index) {
+            return services_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < services_.size(); i++) {
+                output.writeMessage(1, services_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < services_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
+            }
+            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 context.ContextOuterClass.ServiceList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
+            if (!getServicesList().equals(other.getServicesList()))
+                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 (getServicesCount() > 0) {
+                hash = (37 * hash) + SERVICES_FIELD_NUMBER;
+                hash = (53 * hash) + getServicesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceList)
+        context.ContextOuterClass.ServiceListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (servicesBuilder_ == null) {
+                    services_ = java.util.Collections.emptyList();
+                } else {
+                    services_ = null;
+                    servicesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceList build() {
+                context.ContextOuterClass.ServiceList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceList buildPartial() {
+                context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
+                if (servicesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        services_ = java.util.Collections.unmodifiableList(services_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.services_ = services_;
+                } else {
+                    result.services_ = servicesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceList) {
+                    return mergeFrom((context.ContextOuterClass.ServiceList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceList other) {
+                if (other == context.ContextOuterClass.ServiceList.getDefaultInstance())
+                    return this;
+                if (servicesBuilder_ == null) {
+                    if (!other.services_.isEmpty()) {
+                        if (services_.isEmpty()) {
+                            services_ = other.services_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureServicesIsMutable();
+                            services_.addAll(other.services_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.services_.isEmpty()) {
+                        if (servicesBuilder_.isEmpty()) {
+                            servicesBuilder_.dispose();
+                            servicesBuilder_ = null;
+                            services_ = other.services_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            servicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServicesFieldBuilder() : null;
+                        } else {
+                            servicesBuilder_.addAllMessages(other.services_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
+                                    if (servicesBuilder_ == null) {
+                                        ensureServicesIsMutable();
+                                        services_.add(m);
+                                    } else {
+                                        servicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Service> services_ = java.util.Collections.emptyList();
+
+            private void ensureServicesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    services_ = new java.util.ArrayList<context.ContextOuterClass.Service>(services_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Service> getServicesList() {
+                if (servicesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(services_);
+                } else {
+                    return servicesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public int getServicesCount() {
+                if (servicesBuilder_ == null) {
+                    return services_.size();
+                } else {
+                    return servicesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public context.ContextOuterClass.Service getServices(int index) {
+                if (servicesBuilder_ == null) {
+                    return services_.get(index);
+                } else {
+                    return servicesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder setServices(int index, context.ContextOuterClass.Service value) {
+                if (servicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServicesIsMutable();
+                    services_.set(index, value);
+                    onChanged();
+                } else {
+                    servicesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder setServices(int index, context.ContextOuterClass.Service.Builder builderForValue) {
+                if (servicesBuilder_ == null) {
+                    ensureServicesIsMutable();
+                    services_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    servicesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder addServices(context.ContextOuterClass.Service value) {
+                if (servicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServicesIsMutable();
+                    services_.add(value);
+                    onChanged();
+                } else {
+                    servicesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder addServices(int index, context.ContextOuterClass.Service value) {
+                if (servicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureServicesIsMutable();
+                    services_.add(index, value);
+                    onChanged();
+                } else {
+                    servicesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder addServices(context.ContextOuterClass.Service.Builder builderForValue) {
+                if (servicesBuilder_ == null) {
+                    ensureServicesIsMutable();
+                    services_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    servicesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder addServices(int index, context.ContextOuterClass.Service.Builder builderForValue) {
+                if (servicesBuilder_ == null) {
+                    ensureServicesIsMutable();
+                    services_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    servicesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder addAllServices(java.lang.Iterable<? extends context.ContextOuterClass.Service> values) {
+                if (servicesBuilder_ == null) {
+                    ensureServicesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, services_);
+                    onChanged();
+                } else {
+                    servicesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder clearServices() {
+                if (servicesBuilder_ == null) {
+                    services_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    servicesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public Builder removeServices(int index) {
+                if (servicesBuilder_ == null) {
+                    ensureServicesIsMutable();
+                    services_.remove(index);
+                    onChanged();
+                } else {
+                    servicesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public context.ContextOuterClass.Service.Builder getServicesBuilder(int index) {
+                return getServicesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index) {
+                if (servicesBuilder_ == null) {
+                    return services_.get(index);
+                } else {
+                    return servicesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList() {
+                if (servicesBuilder_ != null) {
+                    return servicesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(services_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public context.ContextOuterClass.Service.Builder addServicesBuilder() {
+                return getServicesFieldBuilder().addBuilder(context.ContextOuterClass.Service.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public context.ContextOuterClass.Service.Builder addServicesBuilder(int index) {
+                return getServicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Service.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Service services = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Service.Builder> getServicesBuilderList() {
+                return getServicesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> getServicesFieldBuilder() {
+                if (servicesBuilder_ == null) {
+                    servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder>(services_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    services_ = null;
+                }
+                return servicesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceList)
+        private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
+        }
+
+        public static context.ContextOuterClass.ServiceList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceList> PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {
+
+            @java.lang.Override
+            public ServiceList 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<ServiceList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceFilter)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         * @return Whether the serviceIds field is set.
+         */
+        boolean hasServiceIds();
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         * @return The serviceIds.
+         */
+        context.ContextOuterClass.ServiceIdList getServiceIds();
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         */
+        context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder();
+
+        /**
+         * <code>bool include_endpoint_ids = 2;</code>
+         * @return The includeEndpointIds.
+         */
+        boolean getIncludeEndpointIds();
+
+        /**
+         * <code>bool include_constraints = 3;</code>
+         * @return The includeConstraints.
+         */
+        boolean getIncludeConstraints();
+
+        /**
+         * <code>bool include_config_rules = 4;</code>
+         * @return The includeConfigRules.
+         */
+        boolean getIncludeConfigRules();
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceFilter}
+     */
+    public static final class ServiceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceFilter)
+    ServiceFilterOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceFilter.newBuilder() to construct.
+        private ServiceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceFilter() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceFilter();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
+        }
+
+        public static final int SERVICE_IDS_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ServiceIdList serviceIds_;
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         * @return Whether the serviceIds field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceIds() {
+            return serviceIds_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         * @return The serviceIds.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdList getServiceIds() {
+            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+        }
+
+        /**
+         * <code>.context.ServiceIdList service_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
+            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+        }
+
+        public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
+
+        private boolean includeEndpointIds_ = false;
+
+        /**
+         * <code>bool include_endpoint_ids = 2;</code>
+         * @return The includeEndpointIds.
+         */
+        @java.lang.Override
+        public boolean getIncludeEndpointIds() {
+            return includeEndpointIds_;
+        }
+
+        public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
+
+        private boolean includeConstraints_ = false;
+
+        /**
+         * <code>bool include_constraints = 3;</code>
+         * @return The includeConstraints.
+         */
+        @java.lang.Override
+        public boolean getIncludeConstraints() {
+            return includeConstraints_;
+        }
+
+        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
+
+        private boolean includeConfigRules_ = false;
+
+        /**
+         * <code>bool include_config_rules = 4;</code>
+         * @return The includeConfigRules.
+         */
+        @java.lang.Override
+        public boolean getIncludeConfigRules() {
+            return includeConfigRules_;
+        }
+
+        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 (serviceIds_ != null) {
+                output.writeMessage(1, getServiceIds());
+            }
+            if (includeEndpointIds_ != false) {
+                output.writeBool(2, includeEndpointIds_);
+            }
+            if (includeConstraints_ != false) {
+                output.writeBool(3, includeConstraints_);
+            }
+            if (includeConfigRules_ != false) {
+                output.writeBool(4, includeConfigRules_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (serviceIds_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceIds());
+            }
+            if (includeEndpointIds_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpointIds_);
+            }
+            if (includeConstraints_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConstraints_);
+            }
+            if (includeConfigRules_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
+            }
+            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 context.ContextOuterClass.ServiceFilter)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceFilter other = (context.ContextOuterClass.ServiceFilter) obj;
+            if (hasServiceIds() != other.hasServiceIds())
+                return false;
+            if (hasServiceIds()) {
+                if (!getServiceIds().equals(other.getServiceIds()))
+                    return false;
+            }
+            if (getIncludeEndpointIds() != other.getIncludeEndpointIds())
+                return false;
+            if (getIncludeConstraints() != other.getIncludeConstraints())
+                return false;
+            if (getIncludeConfigRules() != other.getIncludeConfigRules())
+                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 (hasServiceIds()) {
+                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceIds().hashCode();
+            }
+            hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpointIds());
+            hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
+            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceFilter prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceFilter}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceFilter)
+        context.ContextOuterClass.ServiceFilterOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
+                    serviceIdsBuilder_ = null;
+                }
+                includeEndpointIds_ = false;
+                includeConstraints_ = false;
+                includeConfigRules_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceFilter.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceFilter build() {
+                context.ContextOuterClass.ServiceFilter result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceFilter buildPartial() {
+                context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceFilter) {
+                    return mergeFrom((context.ContextOuterClass.ServiceFilter) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceFilter other) {
+                if (other == context.ContextOuterClass.ServiceFilter.getDefaultInstance())
+                    return this;
+                if (other.hasServiceIds()) {
+                    mergeServiceIds(other.getServiceIds());
+                }
+                if (other.getIncludeEndpointIds() != false) {
+                    setIncludeEndpointIds(other.getIncludeEndpointIds());
+                }
+                if (other.getIncludeConstraints() != false) {
+                    setIncludeConstraints(other.getIncludeConstraints());
+                }
+                if (other.getIncludeConfigRules() != false) {
+                    setIncludeConfigRules(other.getIncludeConfigRules());
+                }
+                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(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ServiceIdList serviceIds_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             * @return Whether the serviceIds field is set.
+             */
+            public boolean hasServiceIds() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             * @return The serviceIds.
+             */
+            public context.ContextOuterClass.ServiceIdList getServiceIds() {
+                if (serviceIdsBuilder_ == null) {
+                    return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+                } else {
+                    return serviceIdsBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public Builder setServiceIds(context.ContextOuterClass.ServiceIdList value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceIds_ = value;
+                } else {
+                    serviceIdsBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIds_ = builderForValue.build();
+                } else {
+                    serviceIdsBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
+                if (serviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
+                        getServiceIdsBuilder().mergeFrom(value);
+                    } else {
+                        serviceIds_ = value;
+                    }
+                } else {
+                    serviceIdsBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public Builder clearServiceIds() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                serviceIds_ = null;
+                if (serviceIdsBuilder_ != null) {
+                    serviceIdsBuilder_.dispose();
+                    serviceIdsBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getServiceIdsFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
+                if (serviceIdsBuilder_ != null) {
+                    return serviceIdsBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceIdList service_ids = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> getServiceIdsFieldBuilder() {
+                if (serviceIdsBuilder_ == null) {
+                    serviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder>(getServiceIds(), getParentForChildren(), isClean());
+                    serviceIds_ = null;
+                }
+                return serviceIdsBuilder_;
+            }
+
+            private boolean includeEndpointIds_;
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @return The includeEndpointIds.
+             */
+            @java.lang.Override
+            public boolean getIncludeEndpointIds() {
+                return includeEndpointIds_;
+            }
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @param value The includeEndpointIds to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeEndpointIds(boolean value) {
+                includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                includeEndpointIds_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeConstraints_;
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @return The includeConstraints.
+             */
+            @java.lang.Override
+            public boolean getIncludeConstraints() {
+                return includeConstraints_;
+            }
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @param value The includeConstraints to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeConstraints(boolean value) {
+                includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                includeConstraints_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeConfigRules_;
+
+            /**
+             * <code>bool include_config_rules = 4;</code>
+             * @return The includeConfigRules.
+             */
+            @java.lang.Override
+            public boolean getIncludeConfigRules() {
+                return includeConfigRules_;
+            }
+
+            /**
+             * <code>bool include_config_rules = 4;</code>
+             * @param value The includeConfigRules to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeConfigRules(boolean value) {
+                includeConfigRules_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_config_rules = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                includeConfigRules_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceFilter)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceFilter)
+        private static final context.ContextOuterClass.ServiceFilter DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceFilter();
+        }
+
+        public static context.ContextOuterClass.ServiceFilter getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceFilter> PARSER = new com.google.protobuf.AbstractParser<ServiceFilter>() {
+
+            @java.lang.Override
+            public ServiceFilter 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<ServiceFilter> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceFilter> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ServiceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return Whether the serviceId field is set.
+         */
+        boolean hasServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return The serviceId.
+         */
+        context.ContextOuterClass.ServiceId getServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.ServiceEvent}
+     */
+    public static final class ServiceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceEvent)
+    ServiceEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ServiceEvent.newBuilder() to construct.
+        private ServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ServiceEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ServiceEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int SERVICE_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.ServiceId serviceId_;
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return Whether the serviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceId() {
+            return serviceId_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return The serviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceId() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (serviceId_ != null) {
+                output.writeMessage(2, getServiceId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (serviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
+            }
+            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 context.ContextOuterClass.ServiceEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ServiceEvent other = (context.ContextOuterClass.ServiceEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasServiceId() != other.hasServiceId())
+                return false;
+            if (hasServiceId()) {
+                if (!getServiceId().equals(other.getServiceId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasServiceId()) {
+                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ServiceEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ServiceEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceEvent)
+        context.ContextOuterClass.ServiceEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceEvent build() {
+                context.ContextOuterClass.ServiceEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ServiceEvent buildPartial() {
+                context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ServiceEvent) {
+                    return mergeFrom((context.ContextOuterClass.ServiceEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
+                if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasServiceId()) {
+                    mergeServiceId(other.getServiceId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.ServiceId serviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             * @return Whether the serviceId field is set.
+             */
+            public boolean hasServiceId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             * @return The serviceId.
+             */
+            public context.ContextOuterClass.ServiceId getServiceId() {
+                if (serviceIdBuilder_ == null) {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                } else {
+                    return serviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceId_ = value;
+                } else {
+                    serviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = builderForValue.build();
+                } else {
+                    serviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
+                    } else {
+                        serviceId_ = value;
+                    }
+                } else {
+                    serviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder clearServiceId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getServiceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+                if (serviceIdBuilder_ != null) {
+                    return serviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
+                if (serviceIdBuilder_ == null) {
+                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
+                    serviceId_ = null;
+                }
+                return serviceIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ServiceEvent)
+        private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
+        }
+
+        public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ServiceEvent> PARSER = new com.google.protobuf.AbstractParser<ServiceEvent>() {
+
+            @java.lang.Override
+            public ServiceEvent 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<ServiceEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ServiceEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         * @return Whether the sliceUuid field is set.
+         */
+        boolean hasSliceUuid();
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         * @return The sliceUuid.
+         */
+        context.ContextOuterClass.Uuid getSliceUuid();
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Slice ---------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.SliceId}
+     */
+    public static final class SliceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceId)
+    SliceIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceId.newBuilder() to construct.
+        private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
+        }
+
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ContextId contextId_;
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
+
+        public static final int SLICE_UUID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.Uuid sliceUuid_;
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         * @return Whether the sliceUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceUuid() {
+            return sliceUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         * @return The sliceUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getSliceUuid() {
+            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid slice_uuid = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
+            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+        }
+
+        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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (sliceUuid_ != null) {
+                output.writeMessage(2, getSliceUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (sliceUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
+            }
+            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 context.ContextOuterClass.SliceId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceId other = (context.ContextOuterClass.SliceId) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (hasSliceUuid() != other.hasSliceUuid())
+                return false;
+            if (hasSliceUuid()) {
+                if (!getSliceUuid().equals(other.getSliceUuid()))
+                    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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            if (hasSliceUuid()) {
+                hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Slice ---------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.SliceId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceId)
+        context.ContextOuterClass.SliceIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
+                    sliceUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceId build() {
+                context.ContextOuterClass.SliceId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceId buildPartial() {
+                context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceId) {
+                    return mergeFrom((context.ContextOuterClass.SliceId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceId other) {
+                if (other == context.ContextOuterClass.SliceId.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.hasSliceUuid()) {
+                    mergeSliceUuid(other.getSliceUuid());
+                }
+                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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ContextId contextId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
+
+            private context.ContextOuterClass.Uuid sliceUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> sliceUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             * @return Whether the sliceUuid field is set.
+             */
+            public boolean hasSliceUuid() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             * @return The sliceUuid.
+             */
+            public context.ContextOuterClass.Uuid getSliceUuid() {
+                if (sliceUuidBuilder_ == null) {
+                    return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+                } else {
+                    return sliceUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public Builder setSliceUuid(context.ContextOuterClass.Uuid value) {
+                if (sliceUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceUuid_ = value;
+                } else {
+                    sliceUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuid_ = builderForValue.build();
+                } else {
+                    sliceUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
+                if (sliceUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSliceUuidBuilder().mergeFrom(value);
+                    } else {
+                        sliceUuid_ = value;
+                    }
+                } else {
+                    sliceUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public Builder clearSliceUuid() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceUuid_ = null;
+                if (sliceUuidBuilder_ != null) {
+                    sliceUuidBuilder_.dispose();
+                    sliceUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getSliceUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
+                if (sliceUuidBuilder_ != null) {
+                    return sliceUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid slice_uuid = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getSliceUuidFieldBuilder() {
+                if (sliceUuidBuilder_ == null) {
+                    sliceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getSliceUuid(), getParentForChildren(), isClean());
+                    sliceUuid_ = null;
+                }
+                return sliceUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceId)
+        private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
+        }
+
+        public static context.ContextOuterClass.SliceId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceId> PARSER = new com.google.protobuf.AbstractParser<SliceId>() {
+
+            @java.lang.Override
+            public SliceId 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<SliceId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Slice)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         * @return Whether the sliceId field is set.
+         */
+        boolean hasSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         * @return The sliceId.
+         */
+        context.ContextOuterClass.SliceId getSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList();
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointId getSliceEndpointIds(int index);
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        int getSliceEndpointIdsCount();
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList();
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        context.ContextOuterClass.Constraint getSliceConstraints(int index);
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        int getSliceConstraintsCount();
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList();
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList();
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        context.ContextOuterClass.ServiceId getSliceServiceIds(int index);
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        int getSliceServiceIdsCount();
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList();
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        int getSliceSubsliceIdsCount();
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index);
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         * @return Whether the sliceStatus field is set.
+         */
+        boolean hasSliceStatus();
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         * @return The sliceStatus.
+         */
+        context.ContextOuterClass.SliceStatus getSliceStatus();
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         */
+        context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder();
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         * @return Whether the sliceConfig field is set.
+         */
+        boolean hasSliceConfig();
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         * @return The sliceConfig.
+         */
+        context.ContextOuterClass.SliceConfig getSliceConfig();
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         */
+        context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder();
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         * @return Whether the sliceOwner field is set.
+         */
+        boolean hasSliceOwner();
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         * @return The sliceOwner.
+         */
+        context.ContextOuterClass.SliceOwner getSliceOwner();
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         */
+        context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder();
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Slice}
+     */
+    public static final class Slice extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Slice)
+    SliceOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Slice.newBuilder() to construct.
+        private Slice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Slice() {
+            name_ = "";
+            sliceEndpointIds_ = java.util.Collections.emptyList();
+            sliceConstraints_ = java.util.Collections.emptyList();
+            sliceServiceIds_ = java.util.Collections.emptyList();
+            sliceSubsliceIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Slice();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Slice_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
+        }
+
+        public static final int SLICE_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.SliceId sliceId_;
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         * @return Whether the sliceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceId() {
+            return sliceId_ != null;
+        }
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         * @return The sliceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceId() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        /**
+         * <code>.context.SliceId slice_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
+            return sliceEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList() {
+            return sliceEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getSliceEndpointIdsCount() {
+            return sliceEndpointIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
+            return sliceEndpointIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index) {
+            return sliceEndpointIds_.get(index);
+        }
+
+        public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
+            return sliceConstraints_;
+        }
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList() {
+            return sliceConstraints_;
+        }
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        @java.lang.Override
+        public int getSliceConstraintsCount() {
+            return sliceConstraints_.size();
+        }
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
+            return sliceConstraints_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Constraint slice_constraints = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index) {
+            return sliceConstraints_.get(index);
+        }
+
+        public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
+            return sliceServiceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList() {
+            return sliceServiceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        @java.lang.Override
+        public int getSliceServiceIdsCount() {
+            return sliceServiceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
+            return sliceServiceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index) {
+            return sliceServiceIds_.get(index);
+        }
+
+        public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
+            return sliceSubsliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList() {
+            return sliceSubsliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        @java.lang.Override
+        public int getSliceSubsliceIdsCount() {
+            return sliceSubsliceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
+            return sliceSubsliceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index) {
+            return sliceSubsliceIds_.get(index);
+        }
+
+        public static final int SLICE_STATUS_FIELD_NUMBER = 7;
+
+        private context.ContextOuterClass.SliceStatus sliceStatus_;
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         * @return Whether the sliceStatus field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceStatus() {
+            return sliceStatus_ != null;
+        }
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         * @return The sliceStatus.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceStatus getSliceStatus() {
+            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+        }
+
+        /**
+         * <code>.context.SliceStatus slice_status = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
+            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+        }
+
+        public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
+
+        private context.ContextOuterClass.SliceConfig sliceConfig_;
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         * @return Whether the sliceConfig field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceConfig() {
+            return sliceConfig_ != null;
+        }
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         * @return The sliceConfig.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceConfig getSliceConfig() {
+            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+        }
+
+        /**
+         * <code>.context.SliceConfig slice_config = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
+            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+        }
+
+        public static final int SLICE_OWNER_FIELD_NUMBER = 9;
+
+        private context.ContextOuterClass.SliceOwner sliceOwner_;
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         * @return Whether the sliceOwner field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceOwner() {
+            return sliceOwner_ != null;
+        }
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         * @return The sliceOwner.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceOwner getSliceOwner() {
+            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+        }
+
+        /**
+         * <code>.context.SliceOwner slice_owner = 9;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
+            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+        }
+
+        public static final int TIMESTAMP_FIELD_NUMBER = 10;
+
+        private context.ContextOuterClass.Timestamp timestamp_;
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 10;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        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 (sliceId_ != null) {
+                output.writeMessage(1, getSliceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            for (int i = 0; i < sliceEndpointIds_.size(); i++) {
+                output.writeMessage(3, sliceEndpointIds_.get(i));
+            }
+            for (int i = 0; i < sliceConstraints_.size(); i++) {
+                output.writeMessage(4, sliceConstraints_.get(i));
+            }
+            for (int i = 0; i < sliceServiceIds_.size(); i++) {
+                output.writeMessage(5, sliceServiceIds_.get(i));
+            }
+            for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
+                output.writeMessage(6, sliceSubsliceIds_.get(i));
+            }
+            if (sliceStatus_ != null) {
+                output.writeMessage(7, getSliceStatus());
+            }
+            if (sliceConfig_ != null) {
+                output.writeMessage(8, getSliceConfig());
+            }
+            if (sliceOwner_ != null) {
+                output.writeMessage(9, getSliceOwner());
+            }
+            if (timestamp_ != null) {
+                output.writeMessage(10, getTimestamp());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (sliceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            for (int i = 0; i < sliceEndpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, sliceEndpointIds_.get(i));
+            }
+            for (int i = 0; i < sliceConstraints_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, sliceConstraints_.get(i));
+            }
+            for (int i = 0; i < sliceServiceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, sliceServiceIds_.get(i));
+            }
+            for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, sliceSubsliceIds_.get(i));
+            }
+            if (sliceStatus_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getSliceStatus());
+            }
+            if (sliceConfig_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getSliceConfig());
+            }
+            if (sliceOwner_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getSliceOwner());
+            }
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
+            }
+            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 context.ContextOuterClass.Slice)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;
+            if (hasSliceId() != other.hasSliceId())
+                return false;
+            if (hasSliceId()) {
+                if (!getSliceId().equals(other.getSliceId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getSliceEndpointIdsList().equals(other.getSliceEndpointIdsList()))
+                return false;
+            if (!getSliceConstraintsList().equals(other.getSliceConstraintsList()))
+                return false;
+            if (!getSliceServiceIdsList().equals(other.getSliceServiceIdsList()))
+                return false;
+            if (!getSliceSubsliceIdsList().equals(other.getSliceSubsliceIdsList()))
+                return false;
+            if (hasSliceStatus() != other.hasSliceStatus())
+                return false;
+            if (hasSliceStatus()) {
+                if (!getSliceStatus().equals(other.getSliceStatus()))
+                    return false;
+            }
+            if (hasSliceConfig() != other.hasSliceConfig())
+                return false;
+            if (hasSliceConfig()) {
+                if (!getSliceConfig().equals(other.getSliceConfig()))
+                    return false;
+            }
+            if (hasSliceOwner() != other.hasSliceOwner())
+                return false;
+            if (hasSliceOwner()) {
+                if (!getSliceOwner().equals(other.getSliceOwner()))
+                    return false;
+            }
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    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 (hasSliceId()) {
+                hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (getSliceEndpointIdsCount() > 0) {
+                hash = (37 * hash) + SLICE_ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceEndpointIdsList().hashCode();
+            }
+            if (getSliceConstraintsCount() > 0) {
+                hash = (37 * hash) + SLICE_CONSTRAINTS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceConstraintsList().hashCode();
+            }
+            if (getSliceServiceIdsCount() > 0) {
+                hash = (37 * hash) + SLICE_SERVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceServiceIdsList().hashCode();
+            }
+            if (getSliceSubsliceIdsCount() > 0) {
+                hash = (37 * hash) + SLICE_SUBSLICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceSubsliceIdsList().hashCode();
+            }
+            if (hasSliceStatus()) {
+                hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceStatus().hashCode();
+            }
+            if (hasSliceConfig()) {
+                hash = (37 * hash) + SLICE_CONFIG_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceConfig().hashCode();
+            }
+            if (hasSliceOwner()) {
+                hash = (37 * hash) + SLICE_OWNER_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceOwner().hashCode();
+            }
+            if (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Slice}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Slice)
+        context.ContextOuterClass.SliceOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Slice_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Slice.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                name_ = "";
+                if (sliceEndpointIdsBuilder_ == null) {
+                    sliceEndpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    sliceEndpointIds_ = null;
+                    sliceEndpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (sliceConstraintsBuilder_ == null) {
+                    sliceConstraints_ = java.util.Collections.emptyList();
+                } else {
+                    sliceConstraints_ = null;
+                    sliceConstraintsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                if (sliceServiceIdsBuilder_ == null) {
+                    sliceServiceIds_ = java.util.Collections.emptyList();
+                } else {
+                    sliceServiceIds_ = null;
+                    sliceServiceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000010);
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    sliceSubsliceIds_ = java.util.Collections.emptyList();
+                } else {
+                    sliceSubsliceIds_ = null;
+                    sliceSubsliceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000020);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
+                    sliceStatusBuilder_ = null;
+                }
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
+                    sliceConfigBuilder_ = null;
+                }
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
+                    sliceOwnerBuilder_ = null;
+                }
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Slice_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Slice getDefaultInstanceForType() {
+                return context.ContextOuterClass.Slice.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Slice build() {
+                context.ContextOuterClass.Slice result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Slice buildPartial() {
+                context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.sliceEndpointIds_ = sliceEndpointIds_;
+                } else {
+                    result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
+                }
+                if (sliceConstraintsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.sliceConstraints_ = sliceConstraints_;
+                } else {
+                    result.sliceConstraints_ = sliceConstraintsBuilder_.build();
+                }
+                if (sliceServiceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0)) {
+                        sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000010);
+                    }
+                    result.sliceServiceIds_ = sliceServiceIds_;
+                } else {
+                    result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
+                }
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0)) {
+                        sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000020);
+                    }
+                    result.sliceSubsliceIds_ = sliceSubsliceIds_;
+                } else {
+                    result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Slice result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000200) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Slice) {
+                    return mergeFrom((context.ContextOuterClass.Slice) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Slice other) {
+                if (other == context.ContextOuterClass.Slice.getDefaultInstance())
+                    return this;
+                if (other.hasSliceId()) {
+                    mergeSliceId(other.getSliceId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (sliceEndpointIdsBuilder_ == null) {
+                    if (!other.sliceEndpointIds_.isEmpty()) {
+                        if (sliceEndpointIds_.isEmpty()) {
+                            sliceEndpointIds_ = other.sliceEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureSliceEndpointIdsIsMutable();
+                            sliceEndpointIds_.addAll(other.sliceEndpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceEndpointIds_.isEmpty()) {
+                        if (sliceEndpointIdsBuilder_.isEmpty()) {
+                            sliceEndpointIdsBuilder_.dispose();
+                            sliceEndpointIdsBuilder_ = null;
+                            sliceEndpointIds_ = other.sliceEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
+                        } else {
+                            sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
+                        }
+                    }
+                }
+                if (sliceConstraintsBuilder_ == null) {
+                    if (!other.sliceConstraints_.isEmpty()) {
+                        if (sliceConstraints_.isEmpty()) {
+                            sliceConstraints_ = other.sliceConstraints_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureSliceConstraintsIsMutable();
+                            sliceConstraints_.addAll(other.sliceConstraints_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceConstraints_.isEmpty()) {
+                        if (sliceConstraintsBuilder_.isEmpty()) {
+                            sliceConstraintsBuilder_.dispose();
+                            sliceConstraintsBuilder_ = null;
+                            sliceConstraints_ = other.sliceConstraints_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
+                        } else {
+                            sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
+                        }
+                    }
+                }
+                if (sliceServiceIdsBuilder_ == null) {
+                    if (!other.sliceServiceIds_.isEmpty()) {
+                        if (sliceServiceIds_.isEmpty()) {
+                            sliceServiceIds_ = other.sliceServiceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                        } else {
+                            ensureSliceServiceIdsIsMutable();
+                            sliceServiceIds_.addAll(other.sliceServiceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceServiceIds_.isEmpty()) {
+                        if (sliceServiceIdsBuilder_.isEmpty()) {
+                            sliceServiceIdsBuilder_.dispose();
+                            sliceServiceIdsBuilder_ = null;
+                            sliceServiceIds_ = other.sliceServiceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000010);
+                            sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
+                        } else {
+                            sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
+                        }
+                    }
+                }
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    if (!other.sliceSubsliceIds_.isEmpty()) {
+                        if (sliceSubsliceIds_.isEmpty()) {
+                            sliceSubsliceIds_ = other.sliceSubsliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000020);
+                        } else {
+                            ensureSliceSubsliceIdsIsMutable();
+                            sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceSubsliceIds_.isEmpty()) {
+                        if (sliceSubsliceIdsBuilder_.isEmpty()) {
+                            sliceSubsliceIdsBuilder_.dispose();
+                            sliceSubsliceIdsBuilder_ = null;
+                            sliceSubsliceIds_ = other.sliceSubsliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000020);
+                            sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
+                        } else {
+                            sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
+                        }
+                    }
+                }
+                if (other.hasSliceStatus()) {
+                    mergeSliceStatus(other.getSliceStatus());
+                }
+                if (other.hasSliceConfig()) {
+                    mergeSliceConfig(other.getSliceConfig());
+                }
+                if (other.hasSliceOwner()) {
+                    mergeSliceOwner(other.getSliceOwner());
+                }
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                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(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (sliceEndpointIdsBuilder_ == null) {
+                                        ensureSliceEndpointIdsIsMutable();
+                                        sliceEndpointIds_.add(m);
+                                    } else {
+                                        sliceEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
+                                    if (sliceConstraintsBuilder_ == null) {
+                                        ensureSliceConstraintsIsMutable();
+                                        sliceConstraints_.add(m);
+                                    } else {
+                                        sliceConstraintsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (sliceServiceIdsBuilder_ == null) {
+                                        ensureSliceServiceIdsIsMutable();
+                                        sliceServiceIds_.add(m);
+                                    } else {
+                                        sliceServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceSubsliceIdsBuilder_ == null) {
+                                        ensureSliceSubsliceIdsIsMutable();
+                                        sliceSubsliceIds_.add(m);
+                                    } else {
+                                        sliceSubsliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000200;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.SliceId sliceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             * @return Whether the sliceId field is set.
+             */
+            public boolean hasSliceId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             * @return The sliceId.
+             */
+            public context.ContextOuterClass.SliceId getSliceId() {
+                if (sliceIdBuilder_ == null) {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                } else {
+                    return sliceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceId_ = value;
+                } else {
+                    sliceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = builderForValue.build();
+                } else {
+                    sliceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
+                    } else {
+                        sliceId_ = value;
+                    }
+                } else {
+                    sliceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public Builder clearSliceId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getSliceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+                if (sliceIdBuilder_ != null) {
+                    return sliceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdFieldBuilder() {
+                if (sliceIdBuilder_ == null) {
+                    sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(getSliceId(), getParentForChildren(), isClean());
+                    sliceId_ = null;
+                }
+                return sliceIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ = java.util.Collections.emptyList();
+
+            private void ensureSliceEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> sliceEndpointIdsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceEndpointIds_);
+                } else {
+                    return sliceEndpointIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public int getSliceEndpointIdsCount() {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    return sliceEndpointIds_.size();
+                } else {
+                    return sliceEndpointIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    return sliceEndpointIds_.get(index);
+                } else {
+                    return sliceEndpointIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder setSliceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder setSliceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.add(value);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder addSliceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder addSliceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder addAllSliceEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    ensureSliceEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceEndpointIds_);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder clearSliceEndpointIds() {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    sliceEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public Builder removeSliceEndpointIds(int index) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    ensureSliceEndpointIdsIsMutable();
+                    sliceEndpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    sliceEndpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(int index) {
+                return getSliceEndpointIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index) {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    return sliceEndpointIds_.get(index);
+                } else {
+                    return sliceEndpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList() {
+                if (sliceEndpointIdsBuilder_ != null) {
+                    return sliceEndpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceEndpointIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder() {
+                return getSliceEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder(int index) {
+                return getSliceEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getSliceEndpointIdsBuilderList() {
+                return getSliceEndpointIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsFieldBuilder() {
+                if (sliceEndpointIdsBuilder_ == null) {
+                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    sliceEndpointIds_ = null;
+                }
+                return sliceEndpointIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ = java.util.Collections.emptyList();
+
+            private void ensureSliceConstraintsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> sliceConstraintsBuilder_;
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
+                if (sliceConstraintsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceConstraints_);
+                } else {
+                    return sliceConstraintsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public int getSliceConstraintsCount() {
+                if (sliceConstraintsBuilder_ == null) {
+                    return sliceConstraints_.size();
+                } else {
+                    return sliceConstraintsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
+                if (sliceConstraintsBuilder_ == null) {
+                    return sliceConstraints_.get(index);
+                } else {
+                    return sliceConstraintsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder setSliceConstraints(int index, context.ContextOuterClass.Constraint value) {
+                if (sliceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder setSliceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (sliceConstraintsBuilder_ == null) {
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder addSliceConstraints(context.ContextOuterClass.Constraint value) {
+                if (sliceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.add(value);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder addSliceConstraints(int index, context.ContextOuterClass.Constraint value) {
+                if (sliceConstraintsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder addSliceConstraints(context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (sliceConstraintsBuilder_ == null) {
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder addSliceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
+                if (sliceConstraintsBuilder_ == null) {
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder addAllSliceConstraints(java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
+                if (sliceConstraintsBuilder_ == null) {
+                    ensureSliceConstraintsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceConstraints_);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder clearSliceConstraints() {
+                if (sliceConstraintsBuilder_ == null) {
+                    sliceConstraints_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public Builder removeSliceConstraints(int index) {
+                if (sliceConstraintsBuilder_ == null) {
+                    ensureSliceConstraintsIsMutable();
+                    sliceConstraints_.remove(index);
+                    onChanged();
+                } else {
+                    sliceConstraintsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder getSliceConstraintsBuilder(int index) {
+                return getSliceConstraintsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index) {
+                if (sliceConstraintsBuilder_ == null) {
+                    return sliceConstraints_.get(index);
+                } else {
+                    return sliceConstraintsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList() {
+                if (sliceConstraintsBuilder_ != null) {
+                    return sliceConstraintsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceConstraints_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder() {
+                return getSliceConstraintsFieldBuilder().addBuilder(context.ContextOuterClass.Constraint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder(int index) {
+                return getSliceConstraintsFieldBuilder().addBuilder(index, context.ContextOuterClass.Constraint.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Constraint slice_constraints = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Constraint.Builder> getSliceConstraintsBuilderList() {
+                return getSliceConstraintsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsFieldBuilder() {
+                if (sliceConstraintsBuilder_ == null) {
+                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    sliceConstraints_ = null;
+                }
+                return sliceConstraintsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ = java.util.Collections.emptyList();
+
+            private void ensureSliceServiceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000010) != 0)) {
+                    sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
+                    bitField0_ |= 0x00000010;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> sliceServiceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
+                if (sliceServiceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceServiceIds_);
+                } else {
+                    return sliceServiceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public int getSliceServiceIdsCount() {
+                if (sliceServiceIdsBuilder_ == null) {
+                    return sliceServiceIds_.size();
+                } else {
+                    return sliceServiceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    return sliceServiceIds_.get(index);
+                } else {
+                    return sliceServiceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder setSliceServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder setSliceServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.add(value);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder addSliceServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder addSliceServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder addAllSliceServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    ensureSliceServiceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceServiceIds_);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder clearSliceServiceIds() {
+                if (sliceServiceIdsBuilder_ == null) {
+                    sliceServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000010);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public Builder removeSliceServiceIds(int index) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    ensureSliceServiceIdsIsMutable();
+                    sliceServiceIds_.remove(index);
+                    onChanged();
+                } else {
+                    sliceServiceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(int index) {
+                return getSliceServiceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index) {
+                if (sliceServiceIdsBuilder_ == null) {
+                    return sliceServiceIds_.get(index);
+                } else {
+                    return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList() {
+                if (sliceServiceIdsBuilder_ != null) {
+                    return sliceServiceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceServiceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
+                return getSliceServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(int index) {
+                return getSliceServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getSliceServiceIdsBuilderList() {
+                return getSliceServiceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsFieldBuilder() {
+                if (sliceServiceIdsBuilder_ == null) {
+                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
+                    sliceServiceIds_ = null;
+                }
+                return sliceServiceIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ = java.util.Collections.emptyList();
+
+            private void ensureSliceSubsliceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000020) != 0)) {
+                    sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
+                    bitField0_ |= 0x00000020;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+                } else {
+                    return sliceSubsliceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public int getSliceSubsliceIdsCount() {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    return sliceSubsliceIds_.size();
+                } else {
+                    return sliceSubsliceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    return sliceSubsliceIds_.get(index);
+                } else {
+                    return sliceSubsliceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder setSliceSubsliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder setSliceSubsliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId value) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.add(value);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder addSliceSubsliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder addSliceSubsliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder addAllSliceSubsliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    ensureSliceSubsliceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceSubsliceIds_);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder clearSliceSubsliceIds() {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    sliceSubsliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000020);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public Builder removeSliceSubsliceIds(int index) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    ensureSliceSubsliceIdsIsMutable();
+                    sliceSubsliceIds_.remove(index);
+                    onChanged();
+                } else {
+                    sliceSubsliceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(int index) {
+                return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index) {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    return sliceSubsliceIds_.get(index);
+                } else {
+                    return sliceSubsliceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList() {
+                if (sliceSubsliceIdsBuilder_ != null) {
+                    return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
+                return getSliceSubsliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder(int index) {
+                return getSliceSubsliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceSubsliceIdsBuilderList() {
+                return getSliceSubsliceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsFieldBuilder() {
+                if (sliceSubsliceIdsBuilder_ == null) {
+                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
+                    sliceSubsliceIds_ = null;
+                }
+                return sliceSubsliceIdsBuilder_;
+            }
+
+            private context.ContextOuterClass.SliceStatus sliceStatus_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> sliceStatusBuilder_;
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             * @return Whether the sliceStatus field is set.
+             */
+            public boolean hasSliceStatus() {
+                return ((bitField0_ & 0x00000040) != 0);
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             * @return The sliceStatus.
+             */
+            public context.ContextOuterClass.SliceStatus getSliceStatus() {
+                if (sliceStatusBuilder_ == null) {
+                    return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+                } else {
+                    return sliceStatusBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
+                if (sliceStatusBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceStatus_ = value;
+                } else {
+                    sliceStatusBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatus_ = builderForValue.build();
+                } else {
+                    sliceStatusBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
+                if (sliceStatusBuilder_ == null) {
+                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
+                        getSliceStatusBuilder().mergeFrom(value);
+                    } else {
+                        sliceStatus_ = value;
+                    }
+                } else {
+                    sliceStatusBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public Builder clearSliceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000040);
+                sliceStatus_ = null;
+                if (sliceStatusBuilder_ != null) {
+                    sliceStatusBuilder_.dispose();
+                    sliceStatusBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return getSliceStatusFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
+                if (sliceStatusBuilder_ != null) {
+                    return sliceStatusBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceStatus slice_status = 7;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> getSliceStatusFieldBuilder() {
+                if (sliceStatusBuilder_ == null) {
+                    sliceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder>(getSliceStatus(), getParentForChildren(), isClean());
+                    sliceStatus_ = null;
+                }
+                return sliceStatusBuilder_;
+            }
+
+            private context.ContextOuterClass.SliceConfig sliceConfig_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> sliceConfigBuilder_;
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             * @return Whether the sliceConfig field is set.
+             */
+            public boolean hasSliceConfig() {
+                return ((bitField0_ & 0x00000080) != 0);
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             * @return The sliceConfig.
+             */
+            public context.ContextOuterClass.SliceConfig getSliceConfig() {
+                if (sliceConfigBuilder_ == null) {
+                    return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+                } else {
+                    return sliceConfigBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public Builder setSliceConfig(context.ContextOuterClass.SliceConfig value) {
+                if (sliceConfigBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceConfig_ = value;
+                } else {
+                    sliceConfigBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfig_ = builderForValue.build();
+                } else {
+                    sliceConfigBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
+                if (sliceConfigBuilder_ == null) {
+                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
+                        getSliceConfigBuilder().mergeFrom(value);
+                    } else {
+                        sliceConfig_ = value;
+                    }
+                } else {
+                    sliceConfigBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public Builder clearSliceConfig() {
+                bitField0_ = (bitField0_ & ~0x00000080);
+                sliceConfig_ = null;
+                if (sliceConfigBuilder_ != null) {
+                    sliceConfigBuilder_.dispose();
+                    sliceConfigBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return getSliceConfigFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
+                if (sliceConfigBuilder_ != null) {
+                    return sliceConfigBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceConfig slice_config = 8;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> getSliceConfigFieldBuilder() {
+                if (sliceConfigBuilder_ == null) {
+                    sliceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder>(getSliceConfig(), getParentForChildren(), isClean());
+                    sliceConfig_ = null;
+                }
+                return sliceConfigBuilder_;
+            }
+
+            private context.ContextOuterClass.SliceOwner sliceOwner_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> sliceOwnerBuilder_;
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             * @return Whether the sliceOwner field is set.
+             */
+            public boolean hasSliceOwner() {
+                return ((bitField0_ & 0x00000100) != 0);
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             * @return The sliceOwner.
+             */
+            public context.ContextOuterClass.SliceOwner getSliceOwner() {
+                if (sliceOwnerBuilder_ == null) {
+                    return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+                } else {
+                    return sliceOwnerBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
+                if (sliceOwnerBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceOwner_ = value;
+                } else {
+                    sliceOwnerBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwner_ = builderForValue.build();
+                } else {
+                    sliceOwnerBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
+                if (sliceOwnerBuilder_ == null) {
+                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
+                        getSliceOwnerBuilder().mergeFrom(value);
+                    } else {
+                        sliceOwner_ = value;
+                    }
+                } else {
+                    sliceOwnerBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public Builder clearSliceOwner() {
+                bitField0_ = (bitField0_ & ~0x00000100);
+                sliceOwner_ = null;
+                if (sliceOwnerBuilder_ != null) {
+                    sliceOwnerBuilder_.dispose();
+                    sliceOwnerBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return getSliceOwnerFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
+                if (sliceOwnerBuilder_ != null) {
+                    return sliceOwnerBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceOwner slice_owner = 9;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> getSliceOwnerFieldBuilder() {
+                if (sliceOwnerBuilder_ == null) {
+                    sliceOwnerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder>(getSliceOwner(), getParentForChildren(), isClean());
+                    sliceOwner_ = null;
+                }
+                return sliceOwnerBuilder_;
+            }
+
+            private context.ContextOuterClass.Timestamp timestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000200) != 0);
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000200);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 10;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Slice)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Slice)
+        private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
+        }
+
+        public static context.ContextOuterClass.Slice getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Slice> PARSER = new com.google.protobuf.AbstractParser<Slice>() {
+
+            @java.lang.Override
+            public Slice 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<Slice> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Slice> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Slice getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceOwnerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceOwner)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         * @return Whether the ownerUuid field is set.
+         */
+        boolean hasOwnerUuid();
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         * @return The ownerUuid.
+         */
+        context.ContextOuterClass.Uuid getOwnerUuid();
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();
+
+        /**
+         * <code>string owner_string = 2;</code>
+         * @return The ownerString.
+         */
+        java.lang.String getOwnerString();
+
+        /**
+         * <code>string owner_string = 2;</code>
+         * @return The bytes for ownerString.
+         */
+        com.google.protobuf.ByteString getOwnerStringBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.SliceOwner}
+     */
+    public static final class SliceOwner extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceOwner)
+    SliceOwnerOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceOwner.newBuilder() to construct.
+        private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceOwner() {
+            ownerString_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceOwner();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
+        }
+
+        public static final int OWNER_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid ownerUuid_;
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         * @return Whether the ownerUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasOwnerUuid() {
+            return ownerUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         * @return The ownerUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getOwnerUuid() {
+            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid owner_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
+            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+        }
+
+        public static final int OWNER_STRING_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object ownerString_ = "";
+
+        /**
+         * <code>string owner_string = 2;</code>
+         * @return The ownerString.
+         */
+        @java.lang.Override
+        public java.lang.String getOwnerString() {
+            java.lang.Object ref = ownerString_;
+            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();
+                ownerString_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string owner_string = 2;</code>
+         * @return The bytes for ownerString.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getOwnerStringBytes() {
+            java.lang.Object ref = ownerString_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                ownerString_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (ownerUuid_ != null) {
+                output.writeMessage(1, getOwnerUuid());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (ownerUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
+            }
+            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 context.ContextOuterClass.SliceOwner)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;
+            if (hasOwnerUuid() != other.hasOwnerUuid())
+                return false;
+            if (hasOwnerUuid()) {
+                if (!getOwnerUuid().equals(other.getOwnerUuid()))
+                    return false;
+            }
+            if (!getOwnerString().equals(other.getOwnerString()))
+                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 (hasOwnerUuid()) {
+                hash = (37 * hash) + OWNER_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getOwnerUuid().hashCode();
+            }
+            hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
+            hash = (53 * hash) + getOwnerString().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceOwner}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceOwner)
+        context.ContextOuterClass.SliceOwnerOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
+                    ownerUuidBuilder_ = null;
+                }
+                ownerString_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceOwner.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceOwner build() {
+                context.ContextOuterClass.SliceOwner result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceOwner buildPartial() {
+                context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ownerString_ = ownerString_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceOwner) {
+                    return mergeFrom((context.ContextOuterClass.SliceOwner) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceOwner other) {
+                if (other == context.ContextOuterClass.SliceOwner.getDefaultInstance())
+                    return this;
+                if (other.hasOwnerUuid()) {
+                    mergeOwnerUuid(other.getOwnerUuid());
+                }
+                if (!other.getOwnerString().isEmpty()) {
+                    ownerString_ = other.ownerString_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                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(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    ownerString_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid ownerUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             * @return Whether the ownerUuid field is set.
+             */
+            public boolean hasOwnerUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             * @return The ownerUuid.
+             */
+            public context.ContextOuterClass.Uuid getOwnerUuid() {
+                if (ownerUuidBuilder_ == null) {
+                    return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+                } else {
+                    return ownerUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
+                if (ownerUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ownerUuid_ = value;
+                } else {
+                    ownerUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuid_ = builderForValue.build();
+                } else {
+                    ownerUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
+                if (ownerUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getOwnerUuidBuilder().mergeFrom(value);
+                    } else {
+                        ownerUuid_ = value;
+                    }
+                } else {
+                    ownerUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public Builder clearOwnerUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                ownerUuid_ = null;
+                if (ownerUuidBuilder_ != null) {
+                    ownerUuidBuilder_.dispose();
+                    ownerUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getOwnerUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
+                if (ownerUuidBuilder_ != null) {
+                    return ownerUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid owner_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getOwnerUuidFieldBuilder() {
+                if (ownerUuidBuilder_ == null) {
+                    ownerUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getOwnerUuid(), getParentForChildren(), isClean());
+                    ownerUuid_ = null;
+                }
+                return ownerUuidBuilder_;
+            }
+
+            private java.lang.Object ownerString_ = "";
+
+            /**
+             * <code>string owner_string = 2;</code>
+             * @return The ownerString.
+             */
+            public java.lang.String getOwnerString() {
+                java.lang.Object ref = ownerString_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    ownerString_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string owner_string = 2;</code>
+             * @return The bytes for ownerString.
+             */
+            public com.google.protobuf.ByteString getOwnerStringBytes() {
+                java.lang.Object ref = ownerString_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    ownerString_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string owner_string = 2;</code>
+             * @param value The ownerString to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOwnerString(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ownerString_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string owner_string = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearOwnerString() {
+                ownerString_ = getDefaultInstance().getOwnerString();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string owner_string = 2;</code>
+             * @param value The bytes for ownerString to set.
+             * @return This builder for chaining.
+             */
+            public Builder setOwnerStringBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                ownerString_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceOwner)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceOwner)
+        private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
+        }
+
+        public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceOwner> PARSER = new com.google.protobuf.AbstractParser<SliceOwner>() {
+
+            @java.lang.Override
+            public SliceOwner 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<SliceOwner> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceOwner> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceStatusOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceStatus)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.SliceStatusEnum slice_status = 1;</code>
+         * @return The enum numeric value on the wire for sliceStatus.
+         */
+        int getSliceStatusValue();
+
+        /**
+         * <code>.context.SliceStatusEnum slice_status = 1;</code>
+         * @return The sliceStatus.
+         */
+        context.ContextOuterClass.SliceStatusEnum getSliceStatus();
+    }
+
+    /**
+     * Protobuf type {@code context.SliceStatus}
+     */
+    public static final class SliceStatus extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceStatus)
+    SliceStatusOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceStatus.newBuilder() to construct.
+        private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceStatus() {
+            sliceStatus_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceStatus();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
+        }
+
+        public static final int SLICE_STATUS_FIELD_NUMBER = 1;
+
+        private int sliceStatus_ = 0;
+
+        /**
+         * <code>.context.SliceStatusEnum slice_status = 1;</code>
+         * @return The enum numeric value on the wire for sliceStatus.
+         */
+        @java.lang.Override
+        public int getSliceStatusValue() {
+            return sliceStatus_;
+        }
+
+        /**
+         * <code>.context.SliceStatusEnum slice_status = 1;</code>
+         * @return The sliceStatus.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
+            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+            return result == null ? context.ContextOuterClass.SliceStatusEnum.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 (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
+                output.writeEnum(1, sliceStatus_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
+            }
+            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 context.ContextOuterClass.SliceStatus)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
+            if (sliceStatus_ != other.sliceStatus_)
+                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) + SLICE_STATUS_FIELD_NUMBER;
+            hash = (53 * hash) + sliceStatus_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceStatus}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceStatus)
+        context.ContextOuterClass.SliceStatusOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                sliceStatus_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceStatus.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceStatus build() {
+                context.ContextOuterClass.SliceStatus result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceStatus buildPartial() {
+                context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceStatus_ = sliceStatus_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceStatus) {
+                    return mergeFrom((context.ContextOuterClass.SliceStatus) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceStatus other) {
+                if (other == context.ContextOuterClass.SliceStatus.getDefaultInstance())
+                    return this;
+                if (other.sliceStatus_ != 0) {
+                    setSliceStatusValue(other.getSliceStatusValue());
+                }
+                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:
+                                {
+                                    sliceStatus_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int sliceStatus_ = 0;
+
+            /**
+             * <code>.context.SliceStatusEnum slice_status = 1;</code>
+             * @return The enum numeric value on the wire for sliceStatus.
+             */
+            @java.lang.Override
+            public int getSliceStatusValue() {
+                return sliceStatus_;
+            }
+
+            /**
+             * <code>.context.SliceStatusEnum slice_status = 1;</code>
+             * @param value The enum numeric value on the wire for sliceStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSliceStatusValue(int value) {
+                sliceStatus_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatusEnum slice_status = 1;</code>
+             * @return The sliceStatus.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
+                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
+                return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.context.SliceStatusEnum slice_status = 1;</code>
+             * @param value The sliceStatus to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                sliceStatus_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceStatusEnum slice_status = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSliceStatus() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceStatus_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceStatus)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceStatus)
+        private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
+        }
+
+        public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceStatus> PARSER = new com.google.protobuf.AbstractParser<SliceStatus>() {
+
+            @java.lang.Override
+            public SliceStatus 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<SliceStatus> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceStatus> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRule getConfigRules(int index);
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        int getConfigRulesCount();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.SliceConfig}
+     */
+    public static final class SliceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceConfig)
+    SliceConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceConfig.newBuilder() to construct.
+        private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceConfig() {
+            configRules_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceConfig();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
+        }
+
+        public static final int CONFIG_RULES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+            return configRules_;
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public int getConfigRulesCount() {
+            return configRules_.size();
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+            return configRules_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ConfigRule config_rules = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+            return configRules_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < configRules_.size(); i++) {
+                output.writeMessage(1, configRules_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < configRules_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
+            }
+            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 context.ContextOuterClass.SliceConfig)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
+            if (!getConfigRulesList().equals(other.getConfigRulesList()))
+                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 (getConfigRulesCount() > 0) {
+                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
+                hash = (53 * hash) + getConfigRulesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceConfig)
+        context.ContextOuterClass.SliceConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                } else {
+                    configRules_ = null;
+                    configRulesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceConfig build() {
+                context.ContextOuterClass.SliceConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceConfig buildPartial() {
+                context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
+                if (configRulesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.configRules_ = configRules_;
+                } else {
+                    result.configRules_ = configRulesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceConfig) {
+                    return mergeFrom((context.ContextOuterClass.SliceConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceConfig other) {
+                if (other == context.ContextOuterClass.SliceConfig.getDefaultInstance())
+                    return this;
+                if (configRulesBuilder_ == null) {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRules_.isEmpty()) {
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureConfigRulesIsMutable();
+                            configRules_.addAll(other.configRules_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.configRules_.isEmpty()) {
+                        if (configRulesBuilder_.isEmpty()) {
+                            configRulesBuilder_.dispose();
+                            configRulesBuilder_ = null;
+                            configRules_ = other.configRules_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
+                        } else {
+                            configRulesBuilder_.addAllMessages(other.configRules_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
+                                    if (configRulesBuilder_ == null) {
+                                        ensureConfigRulesIsMutable();
+                                        configRules_.add(m);
+                                    } else {
+                                        configRulesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();
+
+            private void ensureConfigRulesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
+                if (configRulesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                } else {
+                    return configRulesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public int getConfigRulesCount() {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.size();
+                } else {
+                    return configRulesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
+                if (configRulesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, value);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder clearConfigRules() {
+                if (configRulesBuilder_ == null) {
+                    configRules_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public Builder removeConfigRules(int index) {
+                if (configRulesBuilder_ == null) {
+                    ensureConfigRulesIsMutable();
+                    configRules_.remove(index);
+                    onChanged();
+                } else {
+                    configRulesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
+                if (configRulesBuilder_ == null) {
+                    return configRules_.get(index);
+                } else {
+                    return configRulesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
+                if (configRulesBuilder_ != null) {
+                    return configRulesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(configRules_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
+                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
+                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConfigRule config_rules = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
+                return getConfigRulesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
+                if (configRulesBuilder_ == null) {
+                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    configRules_ = null;
+                }
+                return configRulesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceConfig)
+        private static final context.ContextOuterClass.SliceConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceConfig();
+        }
+
+        public static context.ContextOuterClass.SliceConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceConfig> PARSER = new com.google.protobuf.AbstractParser<SliceConfig>() {
+
+            @java.lang.Override
+            public SliceConfig 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<SliceConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        context.ContextOuterClass.SliceId getSliceIds(int index);
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        int getSliceIdsCount();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.SliceIdList}
+     */
+    public static final class SliceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceIdList)
+    SliceIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceIdList.newBuilder() to construct.
+        private SliceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceIdList() {
+            sliceIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
+        }
+
+        public static final int SLICE_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+            return sliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
+            return sliceIds_;
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getSliceIdsCount() {
+            return sliceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceIds(int index) {
+            return sliceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.SliceId slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
+            return sliceIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < sliceIds_.size(); i++) {
+                output.writeMessage(1, sliceIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < sliceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
+            }
+            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 context.ContextOuterClass.SliceIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
+            if (!getSliceIdsList().equals(other.getSliceIdsList()))
+                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 (getSliceIdsCount() > 0) {
+                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceIdList)
+        context.ContextOuterClass.SliceIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = java.util.Collections.emptyList();
+                } else {
+                    sliceIds_ = null;
+                    sliceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceIdList build() {
+                context.ContextOuterClass.SliceIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceIdList buildPartial() {
+                context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
+                if (sliceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.sliceIds_ = sliceIds_;
+                } else {
+                    result.sliceIds_ = sliceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceIdList) {
+                    return mergeFrom((context.ContextOuterClass.SliceIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceIdList other) {
+                if (other == context.ContextOuterClass.SliceIdList.getDefaultInstance())
+                    return this;
+                if (sliceIdsBuilder_ == null) {
+                    if (!other.sliceIds_.isEmpty()) {
+                        if (sliceIds_.isEmpty()) {
+                            sliceIds_ = other.sliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureSliceIdsIsMutable();
+                            sliceIds_.addAll(other.sliceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.sliceIds_.isEmpty()) {
+                        if (sliceIdsBuilder_.isEmpty()) {
+                            sliceIdsBuilder_.dispose();
+                            sliceIdsBuilder_ = null;
+                            sliceIds_ = other.sliceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
+                        } else {
+                            sliceIdsBuilder_.addAllMessages(other.sliceIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
+                                    if (sliceIdsBuilder_ == null) {
+                                        ensureSliceIdsIsMutable();
+                                        sliceIds_.add(m);
+                                    } else {
+                                        sliceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();
+
+            private void ensureSliceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
+                if (sliceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(sliceIds_);
+                } else {
+                    return sliceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public int getSliceIdsCount() {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.size();
+                } else {
+                    return sliceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceId getSliceIds(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.get(index);
+                } else {
+                    return sliceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder addSliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder addAllSliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceIds_);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder clearSliceIds() {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public Builder removeSliceIds(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    ensureSliceIdsIsMutable();
+                    sliceIds_.remove(index);
+                    onChanged();
+                } else {
+                    sliceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(int index) {
+                return getSliceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_.get(index);
+                } else {
+                    return sliceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
+                if (sliceIdsBuilder_ != null) {
+                    return sliceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(sliceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
+                return getSliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(int index) {
+                return getSliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.SliceId slice_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceIdsBuilderList() {
+                return getSliceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    sliceIds_ = null;
+                }
+                return sliceIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceIdList)
+        private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
+        }
+
+        public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceIdList> PARSER = new com.google.protobuf.AbstractParser<SliceIdList>() {
+
+            @java.lang.Override
+            public SliceIdList 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<SliceIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Slice> getSlicesList();
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        context.ContextOuterClass.Slice getSlices(int index);
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        int getSlicesCount();
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList();
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.SliceList}
+     */
+    public static final class SliceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceList)
+    SliceListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceList.newBuilder() to construct.
+        private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceList() {
+            slices_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
+        }
+
+        public static final int SLICES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Slice> slices_;
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
+            return slices_;
+        }
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList() {
+            return slices_;
+        }
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        @java.lang.Override
+        public int getSlicesCount() {
+            return slices_.size();
+        }
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Slice getSlices(int index) {
+            return slices_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Slice slices = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index) {
+            return slices_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < slices_.size(); i++) {
+                output.writeMessage(1, slices_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < slices_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
+            }
+            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 context.ContextOuterClass.SliceList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
+            if (!getSlicesList().equals(other.getSlicesList()))
+                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 (getSlicesCount() > 0) {
+                hash = (37 * hash) + SLICES_FIELD_NUMBER;
+                hash = (53 * hash) + getSlicesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceList)
+        context.ContextOuterClass.SliceListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (slicesBuilder_ == null) {
+                    slices_ = java.util.Collections.emptyList();
+                } else {
+                    slices_ = null;
+                    slicesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceList build() {
+                context.ContextOuterClass.SliceList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceList buildPartial() {
+                context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
+                if (slicesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        slices_ = java.util.Collections.unmodifiableList(slices_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.slices_ = slices_;
+                } else {
+                    result.slices_ = slicesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceList) {
+                    return mergeFrom((context.ContextOuterClass.SliceList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceList other) {
+                if (other == context.ContextOuterClass.SliceList.getDefaultInstance())
+                    return this;
+                if (slicesBuilder_ == null) {
+                    if (!other.slices_.isEmpty()) {
+                        if (slices_.isEmpty()) {
+                            slices_ = other.slices_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureSlicesIsMutable();
+                            slices_.addAll(other.slices_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.slices_.isEmpty()) {
+                        if (slicesBuilder_.isEmpty()) {
+                            slicesBuilder_.dispose();
+                            slicesBuilder_ = null;
+                            slices_ = other.slices_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            slicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSlicesFieldBuilder() : null;
+                        } else {
+                            slicesBuilder_.addAllMessages(other.slices_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
+                                    if (slicesBuilder_ == null) {
+                                        ensureSlicesIsMutable();
+                                        slices_.add(m);
+                                    } else {
+                                        slicesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Slice> slices_ = java.util.Collections.emptyList();
+
+            private void ensureSlicesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>(slices_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> slicesBuilder_;
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
+                if (slicesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(slices_);
+                } else {
+                    return slicesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public int getSlicesCount() {
+                if (slicesBuilder_ == null) {
+                    return slices_.size();
+                } else {
+                    return slicesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public context.ContextOuterClass.Slice getSlices(int index) {
+                if (slicesBuilder_ == null) {
+                    return slices_.get(index);
+                } else {
+                    return slicesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder setSlices(int index, context.ContextOuterClass.Slice value) {
+                if (slicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSlicesIsMutable();
+                    slices_.set(index, value);
+                    onChanged();
+                } else {
+                    slicesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder setSlices(int index, context.ContextOuterClass.Slice.Builder builderForValue) {
+                if (slicesBuilder_ == null) {
+                    ensureSlicesIsMutable();
+                    slices_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    slicesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder addSlices(context.ContextOuterClass.Slice value) {
+                if (slicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSlicesIsMutable();
+                    slices_.add(value);
+                    onChanged();
+                } else {
+                    slicesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder addSlices(int index, context.ContextOuterClass.Slice value) {
+                if (slicesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSlicesIsMutable();
+                    slices_.add(index, value);
+                    onChanged();
+                } else {
+                    slicesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder addSlices(context.ContextOuterClass.Slice.Builder builderForValue) {
+                if (slicesBuilder_ == null) {
+                    ensureSlicesIsMutable();
+                    slices_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    slicesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder addSlices(int index, context.ContextOuterClass.Slice.Builder builderForValue) {
+                if (slicesBuilder_ == null) {
+                    ensureSlicesIsMutable();
+                    slices_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    slicesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder addAllSlices(java.lang.Iterable<? extends context.ContextOuterClass.Slice> values) {
+                if (slicesBuilder_ == null) {
+                    ensureSlicesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, slices_);
+                    onChanged();
+                } else {
+                    slicesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder clearSlices() {
+                if (slicesBuilder_ == null) {
+                    slices_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    slicesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public Builder removeSlices(int index) {
+                if (slicesBuilder_ == null) {
+                    ensureSlicesIsMutable();
+                    slices_.remove(index);
+                    onChanged();
+                } else {
+                    slicesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public context.ContextOuterClass.Slice.Builder getSlicesBuilder(int index) {
+                return getSlicesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index) {
+                if (slicesBuilder_ == null) {
+                    return slices_.get(index);
+                } else {
+                    return slicesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList() {
+                if (slicesBuilder_ != null) {
+                    return slicesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(slices_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
+                return getSlicesFieldBuilder().addBuilder(context.ContextOuterClass.Slice.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public context.ContextOuterClass.Slice.Builder addSlicesBuilder(int index) {
+                return getSlicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Slice.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Slice slices = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Slice.Builder> getSlicesBuilderList() {
+                return getSlicesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> getSlicesFieldBuilder() {
+                if (slicesBuilder_ == null) {
+                    slicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder>(slices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    slices_ = null;
+                }
+                return slicesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceList)
+        private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
+        }
+
+        public static context.ContextOuterClass.SliceList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceList> PARSER = new com.google.protobuf.AbstractParser<SliceList>() {
+
+            @java.lang.Override
+            public SliceList 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<SliceList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceFilter)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         * @return Whether the sliceIds field is set.
+         */
+        boolean hasSliceIds();
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         * @return The sliceIds.
+         */
+        context.ContextOuterClass.SliceIdList getSliceIds();
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         */
+        context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder();
+
+        /**
+         * <code>bool include_endpoint_ids = 2;</code>
+         * @return The includeEndpointIds.
+         */
+        boolean getIncludeEndpointIds();
+
+        /**
+         * <code>bool include_constraints = 3;</code>
+         * @return The includeConstraints.
+         */
+        boolean getIncludeConstraints();
+
+        /**
+         * <code>bool include_service_ids = 4;</code>
+         * @return The includeServiceIds.
+         */
+        boolean getIncludeServiceIds();
+
+        /**
+         * <code>bool include_subslice_ids = 5;</code>
+         * @return The includeSubsliceIds.
+         */
+        boolean getIncludeSubsliceIds();
+
+        /**
+         * <code>bool include_config_rules = 6;</code>
+         * @return The includeConfigRules.
+         */
+        boolean getIncludeConfigRules();
+    }
+
+    /**
+     * Protobuf type {@code context.SliceFilter}
+     */
+    public static final class SliceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceFilter)
+    SliceFilterOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceFilter.newBuilder() to construct.
+        private SliceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceFilter() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceFilter();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
+        }
+
+        public static final int SLICE_IDS_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.SliceIdList sliceIds_;
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         * @return Whether the sliceIds field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceIds() {
+            return sliceIds_ != null;
+        }
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         * @return The sliceIds.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdList getSliceIds() {
+            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+        }
+
+        /**
+         * <code>.context.SliceIdList slice_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
+            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+        }
+
+        public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
+
+        private boolean includeEndpointIds_ = false;
+
+        /**
+         * <code>bool include_endpoint_ids = 2;</code>
+         * @return The includeEndpointIds.
+         */
+        @java.lang.Override
+        public boolean getIncludeEndpointIds() {
+            return includeEndpointIds_;
+        }
+
+        public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
+
+        private boolean includeConstraints_ = false;
+
+        /**
+         * <code>bool include_constraints = 3;</code>
+         * @return The includeConstraints.
+         */
+        @java.lang.Override
+        public boolean getIncludeConstraints() {
+            return includeConstraints_;
+        }
+
+        public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
+
+        private boolean includeServiceIds_ = false;
+
+        /**
+         * <code>bool include_service_ids = 4;</code>
+         * @return The includeServiceIds.
+         */
+        @java.lang.Override
+        public boolean getIncludeServiceIds() {
+            return includeServiceIds_;
+        }
+
+        public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
+
+        private boolean includeSubsliceIds_ = false;
+
+        /**
+         * <code>bool include_subslice_ids = 5;</code>
+         * @return The includeSubsliceIds.
+         */
+        @java.lang.Override
+        public boolean getIncludeSubsliceIds() {
+            return includeSubsliceIds_;
+        }
+
+        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
+
+        private boolean includeConfigRules_ = false;
+
+        /**
+         * <code>bool include_config_rules = 6;</code>
+         * @return The includeConfigRules.
+         */
+        @java.lang.Override
+        public boolean getIncludeConfigRules() {
+            return includeConfigRules_;
+        }
+
+        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 (sliceIds_ != null) {
+                output.writeMessage(1, getSliceIds());
+            }
+            if (includeEndpointIds_ != false) {
+                output.writeBool(2, includeEndpointIds_);
+            }
+            if (includeConstraints_ != false) {
+                output.writeBool(3, includeConstraints_);
+            }
+            if (includeServiceIds_ != false) {
+                output.writeBool(4, includeServiceIds_);
+            }
+            if (includeSubsliceIds_ != false) {
+                output.writeBool(5, includeSubsliceIds_);
+            }
+            if (includeConfigRules_ != false) {
+                output.writeBool(6, includeConfigRules_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (sliceIds_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceIds());
+            }
+            if (includeEndpointIds_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpointIds_);
+            }
+            if (includeConstraints_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConstraints_);
+            }
+            if (includeServiceIds_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeServiceIds_);
+            }
+            if (includeSubsliceIds_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeSubsliceIds_);
+            }
+            if (includeConfigRules_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
+            }
+            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 context.ContextOuterClass.SliceFilter)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceFilter other = (context.ContextOuterClass.SliceFilter) obj;
+            if (hasSliceIds() != other.hasSliceIds())
+                return false;
+            if (hasSliceIds()) {
+                if (!getSliceIds().equals(other.getSliceIds()))
+                    return false;
+            }
+            if (getIncludeEndpointIds() != other.getIncludeEndpointIds())
+                return false;
+            if (getIncludeConstraints() != other.getIncludeConstraints())
+                return false;
+            if (getIncludeServiceIds() != other.getIncludeServiceIds())
+                return false;
+            if (getIncludeSubsliceIds() != other.getIncludeSubsliceIds())
+                return false;
+            if (getIncludeConfigRules() != other.getIncludeConfigRules())
+                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 (hasSliceIds()) {
+                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceIds().hashCode();
+            }
+            hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpointIds());
+            hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
+            hash = (37 * hash) + INCLUDE_SERVICE_IDS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeServiceIds());
+            hash = (37 * hash) + INCLUDE_SUBSLICE_IDS_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
+            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceFilter prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceFilter}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceFilter)
+        context.ContextOuterClass.SliceFilterOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
+                    sliceIdsBuilder_ = null;
+                }
+                includeEndpointIds_ = false;
+                includeConstraints_ = false;
+                includeServiceIds_ = false;
+                includeSubsliceIds_ = false;
+                includeConfigRules_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceFilter.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceFilter build() {
+                context.ContextOuterClass.SliceFilter result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceFilter buildPartial() {
+                context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.includeEndpointIds_ = includeEndpointIds_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.includeConstraints_ = includeConstraints_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeServiceIds_ = includeServiceIds_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeSubsliceIds_ = includeSubsliceIds_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.includeConfigRules_ = includeConfigRules_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceFilter) {
+                    return mergeFrom((context.ContextOuterClass.SliceFilter) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceFilter other) {
+                if (other == context.ContextOuterClass.SliceFilter.getDefaultInstance())
+                    return this;
+                if (other.hasSliceIds()) {
+                    mergeSliceIds(other.getSliceIds());
+                }
+                if (other.getIncludeEndpointIds() != false) {
+                    setIncludeEndpointIds(other.getIncludeEndpointIds());
+                }
+                if (other.getIncludeConstraints() != false) {
+                    setIncludeConstraints(other.getIncludeConstraints());
+                }
+                if (other.getIncludeServiceIds() != false) {
+                    setIncludeServiceIds(other.getIncludeServiceIds());
+                }
+                if (other.getIncludeSubsliceIds() != false) {
+                    setIncludeSubsliceIds(other.getIncludeSubsliceIds());
+                }
+                if (other.getIncludeConfigRules() != false) {
+                    setIncludeConfigRules(other.getIncludeConfigRules());
+                }
+                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(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    includeEndpointIds_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    includeConstraints_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeServiceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeSubsliceIds_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    includeConfigRules_ = input.readBool();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.SliceIdList sliceIds_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> sliceIdsBuilder_;
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             * @return Whether the sliceIds field is set.
+             */
+            public boolean hasSliceIds() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             * @return The sliceIds.
+             */
+            public context.ContextOuterClass.SliceIdList getSliceIds() {
+                if (sliceIdsBuilder_ == null) {
+                    return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+                } else {
+                    return sliceIdsBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public Builder setSliceIds(context.ContextOuterClass.SliceIdList value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceIds_ = value;
+                } else {
+                    sliceIdsBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIds_ = builderForValue.build();
+                } else {
+                    sliceIdsBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
+                if (sliceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
+                        getSliceIdsBuilder().mergeFrom(value);
+                    } else {
+                        sliceIds_ = value;
+                    }
+                } else {
+                    sliceIdsBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public Builder clearSliceIds() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                sliceIds_ = null;
+                if (sliceIdsBuilder_ != null) {
+                    sliceIdsBuilder_.dispose();
+                    sliceIdsBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getSliceIdsFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
+                if (sliceIdsBuilder_ != null) {
+                    return sliceIdsBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceIdList slice_ids = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> getSliceIdsFieldBuilder() {
+                if (sliceIdsBuilder_ == null) {
+                    sliceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder>(getSliceIds(), getParentForChildren(), isClean());
+                    sliceIds_ = null;
+                }
+                return sliceIdsBuilder_;
+            }
+
+            private boolean includeEndpointIds_;
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @return The includeEndpointIds.
+             */
+            @java.lang.Override
+            public boolean getIncludeEndpointIds() {
+                return includeEndpointIds_;
+            }
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @param value The includeEndpointIds to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeEndpointIds(boolean value) {
+                includeEndpointIds_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_endpoint_ids = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeEndpointIds() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                includeEndpointIds_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeConstraints_;
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @return The includeConstraints.
+             */
+            @java.lang.Override
+            public boolean getIncludeConstraints() {
+                return includeConstraints_;
+            }
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @param value The includeConstraints to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeConstraints(boolean value) {
+                includeConstraints_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_constraints = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeConstraints() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                includeConstraints_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeServiceIds_;
+
+            /**
+             * <code>bool include_service_ids = 4;</code>
+             * @return The includeServiceIds.
+             */
+            @java.lang.Override
+            public boolean getIncludeServiceIds() {
+                return includeServiceIds_;
+            }
+
+            /**
+             * <code>bool include_service_ids = 4;</code>
+             * @param value The includeServiceIds to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeServiceIds(boolean value) {
+                includeServiceIds_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_service_ids = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeServiceIds() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                includeServiceIds_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeSubsliceIds_;
+
+            /**
+             * <code>bool include_subslice_ids = 5;</code>
+             * @return The includeSubsliceIds.
+             */
+            @java.lang.Override
+            public boolean getIncludeSubsliceIds() {
+                return includeSubsliceIds_;
+            }
+
+            /**
+             * <code>bool include_subslice_ids = 5;</code>
+             * @param value The includeSubsliceIds to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeSubsliceIds(boolean value) {
+                includeSubsliceIds_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_subslice_ids = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeSubsliceIds() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                includeSubsliceIds_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeConfigRules_;
+
+            /**
+             * <code>bool include_config_rules = 6;</code>
+             * @return The includeConfigRules.
+             */
+            @java.lang.Override
+            public boolean getIncludeConfigRules() {
+                return includeConfigRules_;
+            }
+
+            /**
+             * <code>bool include_config_rules = 6;</code>
+             * @param value The includeConfigRules to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeConfigRules(boolean value) {
+                includeConfigRules_ = value;
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool include_config_rules = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeConfigRules() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                includeConfigRules_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceFilter)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceFilter)
+        private static final context.ContextOuterClass.SliceFilter DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceFilter();
+        }
+
+        public static context.ContextOuterClass.SliceFilter getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceFilter> PARSER = new com.google.protobuf.AbstractParser<SliceFilter>() {
+
+            @java.lang.Override
+            public SliceFilter 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<SliceFilter> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceFilter> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SliceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         * @return Whether the sliceId field is set.
+         */
+        boolean hasSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         * @return The sliceId.
+         */
+        context.ContextOuterClass.SliceId getSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.SliceEvent}
+     */
+    public static final class SliceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceEvent)
+    SliceEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SliceEvent.newBuilder() to construct.
+        private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SliceEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SliceEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int SLICE_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.SliceId sliceId_;
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         * @return Whether the sliceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceId() {
+            return sliceId_ != null;
+        }
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         * @return The sliceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceId() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        /**
+         * <code>.context.SliceId slice_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (sliceId_ != null) {
+                output.writeMessage(2, getSliceId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (sliceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
+            }
+            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 context.ContextOuterClass.SliceEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasSliceId() != other.hasSliceId())
+                return false;
+            if (hasSliceId()) {
+                if (!getSliceId().equals(other.getSliceId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasSliceId()) {
+                hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.SliceEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.SliceEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceEvent)
+        context.ContextOuterClass.SliceEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.SliceEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceEvent build() {
+                context.ContextOuterClass.SliceEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.SliceEvent buildPartial() {
+                context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.SliceEvent) {
+                    return mergeFrom((context.ContextOuterClass.SliceEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.SliceEvent other) {
+                if (other == context.ContextOuterClass.SliceEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasSliceId()) {
+                    mergeSliceId(other.getSliceId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.SliceId sliceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             * @return Whether the sliceId field is set.
+             */
+            public boolean hasSliceId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             * @return The sliceId.
+             */
+            public context.ContextOuterClass.SliceId getSliceId() {
+                if (sliceIdBuilder_ == null) {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                } else {
+                    return sliceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceId_ = value;
+                } else {
+                    sliceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = builderForValue.build();
+                } else {
+                    sliceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
+                    } else {
+                        sliceId_ = value;
+                    }
+                } else {
+                    sliceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public Builder clearSliceId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getSliceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+                if (sliceIdBuilder_ != null) {
+                    return sliceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdFieldBuilder() {
+                if (sliceIdBuilder_ == null) {
+                    sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(getSliceId(), getParentForChildren(), isClean());
+                    sliceId_ = null;
+                }
+                return sliceIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.SliceEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.SliceEvent)
+        private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
+        }
+
+        public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SliceEvent> PARSER = new com.google.protobuf.AbstractParser<SliceEvent>() {
+
+            @java.lang.Override
+            public SliceEvent 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<SliceEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SliceEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         * @return Whether the connectionUuid field is set.
+         */
+        boolean hasConnectionUuid();
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         * @return The connectionUuid.
+         */
+        context.ContextOuterClass.Uuid getConnectionUuid();
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Connection ----------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.ConnectionId}
+     */
+    public static final class ConnectionId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionId)
+    ConnectionIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionId.newBuilder() to construct.
+        private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
+        }
+
+        public static final int CONNECTION_UUID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid connectionUuid_;
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         * @return Whether the connectionUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasConnectionUuid() {
+            return connectionUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         * @return The connectionUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getConnectionUuid() {
+            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid connection_uuid = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
+            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+        }
+
+        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 (connectionUuid_ != null) {
+                output.writeMessage(1, getConnectionUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (connectionUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
+            }
+            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 context.ContextOuterClass.ConnectionId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) obj;
+            if (hasConnectionUuid() != other.hasConnectionUuid())
+                return false;
+            if (hasConnectionUuid()) {
+                if (!getConnectionUuid().equals(other.getConnectionUuid()))
+                    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 (hasConnectionUuid()) {
+                hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Connection ----------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.ConnectionId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionId)
+        context.ContextOuterClass.ConnectionIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
+                    connectionUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionId build() {
+                context.ContextOuterClass.ConnectionId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionId buildPartial() {
+                context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionId) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionId other) {
+                if (other == context.ContextOuterClass.ConnectionId.getDefaultInstance())
+                    return this;
+                if (other.hasConnectionUuid()) {
+                    mergeConnectionUuid(other.getConnectionUuid());
+                }
+                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(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid connectionUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             * @return Whether the connectionUuid field is set.
+             */
+            public boolean hasConnectionUuid() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             * @return The connectionUuid.
+             */
+            public context.ContextOuterClass.Uuid getConnectionUuid() {
+                if (connectionUuidBuilder_ == null) {
+                    return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+                } else {
+                    return connectionUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
+                if (connectionUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    connectionUuid_ = value;
+                } else {
+                    connectionUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuid_ = builderForValue.build();
+                } else {
+                    connectionUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
+                if (connectionUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getConnectionUuidBuilder().mergeFrom(value);
+                    } else {
+                        connectionUuid_ = value;
+                    }
+                } else {
+                    connectionUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public Builder clearConnectionUuid() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionUuid_ = null;
+                if (connectionUuidBuilder_ != null) {
+                    connectionUuidBuilder_.dispose();
+                    connectionUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getConnectionUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
+                if (connectionUuidBuilder_ != null) {
+                    return connectionUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid connection_uuid = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getConnectionUuidFieldBuilder() {
+                if (connectionUuidBuilder_ == null) {
+                    connectionUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getConnectionUuid(), getParentForChildren(), isClean());
+                    connectionUuid_ = null;
+                }
+                return connectionUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionId)
+        private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
+        }
+
+        public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionId> PARSER = new com.google.protobuf.AbstractParser<ConnectionId>() {
+
+            @java.lang.Override
+            public ConnectionId 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<ConnectionId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionSettings_L0OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string lsp_symbolic_name = 1;</code>
+         * @return The lspSymbolicName.
+         */
+        java.lang.String getLspSymbolicName();
+
+        /**
+         * <code>string lsp_symbolic_name = 1;</code>
+         * @return The bytes for lspSymbolicName.
+         */
+        com.google.protobuf.ByteString getLspSymbolicNameBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionSettings_L0}
+     */
+    public static final class ConnectionSettings_L0 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
+    ConnectionSettings_L0OrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionSettings_L0.newBuilder() to construct.
+        private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionSettings_L0() {
+            lspSymbolicName_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionSettings_L0();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
+        }
+
+        public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object lspSymbolicName_ = "";
+
+        /**
+         * <code>string lsp_symbolic_name = 1;</code>
+         * @return The lspSymbolicName.
+         */
+        @java.lang.Override
+        public java.lang.String getLspSymbolicName() {
+            java.lang.Object ref = lspSymbolicName_;
+            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();
+                lspSymbolicName_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string lsp_symbolic_name = 1;</code>
+         * @return The bytes for lspSymbolicName.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getLspSymbolicNameBytes() {
+            java.lang.Object ref = lspSymbolicName_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                lspSymbolicName_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
+            }
+            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 context.ContextOuterClass.ConnectionSettings_L0)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
+            if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
+                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) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getLspSymbolicName().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionSettings_L0}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L0)
+        context.ContextOuterClass.ConnectionSettings_L0OrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                lspSymbolicName_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L0 build() {
+                context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
+                context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.lspSymbolicName_ = lspSymbolicName_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionSettings_L0) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L0) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L0 other) {
+                if (other == context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance())
+                    return this;
+                if (!other.getLspSymbolicName().isEmpty()) {
+                    lspSymbolicName_ = other.lspSymbolicName_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                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:
+                                {
+                                    lspSymbolicName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // 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 lspSymbolicName_ = "";
+
+            /**
+             * <code>string lsp_symbolic_name = 1;</code>
+             * @return The lspSymbolicName.
+             */
+            public java.lang.String getLspSymbolicName() {
+                java.lang.Object ref = lspSymbolicName_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    lspSymbolicName_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string lsp_symbolic_name = 1;</code>
+             * @return The bytes for lspSymbolicName.
+             */
+            public com.google.protobuf.ByteString getLspSymbolicNameBytes() {
+                java.lang.Object ref = lspSymbolicName_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    lspSymbolicName_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string lsp_symbolic_name = 1;</code>
+             * @param value The lspSymbolicName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLspSymbolicName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string lsp_symbolic_name = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLspSymbolicName() {
+                lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string lsp_symbolic_name = 1;</code>
+             * @param value The bytes for lspSymbolicName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLspSymbolicNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                lspSymbolicName_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
+        private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionSettings_L0> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L0>() {
+
+            @java.lang.Override
+            public ConnectionSettings_L0 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<ConnectionSettings_L0> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionSettings_L0> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionSettings_L2OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string src_mac_address = 1;</code>
+         * @return The srcMacAddress.
+         */
+        java.lang.String getSrcMacAddress();
+
+        /**
+         * <code>string src_mac_address = 1;</code>
+         * @return The bytes for srcMacAddress.
+         */
+        com.google.protobuf.ByteString getSrcMacAddressBytes();
+
+        /**
+         * <code>string dst_mac_address = 2;</code>
+         * @return The dstMacAddress.
+         */
+        java.lang.String getDstMacAddress();
+
+        /**
+         * <code>string dst_mac_address = 2;</code>
+         * @return The bytes for dstMacAddress.
+         */
+        com.google.protobuf.ByteString getDstMacAddressBytes();
+
+        /**
+         * <code>uint32 ether_type = 3;</code>
+         * @return The etherType.
+         */
+        int getEtherType();
+
+        /**
+         * <code>uint32 vlan_id = 4;</code>
+         * @return The vlanId.
+         */
+        int getVlanId();
+
+        /**
+         * <code>uint32 mpls_label = 5;</code>
+         * @return The mplsLabel.
+         */
+        int getMplsLabel();
+
+        /**
+         * <code>uint32 mpls_traffic_class = 6;</code>
+         * @return The mplsTrafficClass.
+         */
+        int getMplsTrafficClass();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionSettings_L2}
+     */
+    public static final class ConnectionSettings_L2 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
+    ConnectionSettings_L2OrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionSettings_L2.newBuilder() to construct.
+        private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionSettings_L2() {
+            srcMacAddress_ = "";
+            dstMacAddress_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionSettings_L2();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
+        }
+
+        public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcMacAddress_ = "";
+
+        /**
+         * <code>string src_mac_address = 1;</code>
+         * @return The srcMacAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getSrcMacAddress() {
+            java.lang.Object ref = srcMacAddress_;
+            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();
+                srcMacAddress_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string src_mac_address = 1;</code>
+         * @return The bytes for srcMacAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSrcMacAddressBytes() {
+            java.lang.Object ref = srcMacAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                srcMacAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstMacAddress_ = "";
+
+        /**
+         * <code>string dst_mac_address = 2;</code>
+         * @return The dstMacAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getDstMacAddress() {
+            java.lang.Object ref = dstMacAddress_;
+            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();
+                dstMacAddress_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string dst_mac_address = 2;</code>
+         * @return The bytes for dstMacAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDstMacAddressBytes() {
+            java.lang.Object ref = dstMacAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                dstMacAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int ETHER_TYPE_FIELD_NUMBER = 3;
+
+        private int etherType_ = 0;
+
+        /**
+         * <code>uint32 ether_type = 3;</code>
+         * @return The etherType.
+         */
+        @java.lang.Override
+        public int getEtherType() {
+            return etherType_;
+        }
+
+        public static final int VLAN_ID_FIELD_NUMBER = 4;
+
+        private int vlanId_ = 0;
+
+        /**
+         * <code>uint32 vlan_id = 4;</code>
+         * @return The vlanId.
+         */
+        @java.lang.Override
+        public int getVlanId() {
+            return vlanId_;
+        }
+
+        public static final int MPLS_LABEL_FIELD_NUMBER = 5;
+
+        private int mplsLabel_ = 0;
+
+        /**
+         * <code>uint32 mpls_label = 5;</code>
+         * @return The mplsLabel.
+         */
+        @java.lang.Override
+        public int getMplsLabel() {
+            return mplsLabel_;
+        }
+
+        public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
+
+        private int mplsTrafficClass_ = 0;
+
+        /**
+         * <code>uint32 mpls_traffic_class = 6;</code>
+         * @return The mplsTrafficClass.
+         */
+        @java.lang.Override
+        public int getMplsTrafficClass() {
+            return mplsTrafficClass_;
+        }
+
+        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.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
+            }
+            if (etherType_ != 0) {
+                output.writeUInt32(3, etherType_);
+            }
+            if (vlanId_ != 0) {
+                output.writeUInt32(4, vlanId_);
+            }
+            if (mplsLabel_ != 0) {
+                output.writeUInt32(5, mplsLabel_);
+            }
+            if (mplsTrafficClass_ != 0) {
+                output.writeUInt32(6, mplsTrafficClass_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
+            }
+            if (etherType_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, etherType_);
+            }
+            if (vlanId_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, vlanId_);
+            }
+            if (mplsLabel_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, mplsLabel_);
+            }
+            if (mplsTrafficClass_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
+            }
+            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 context.ContextOuterClass.ConnectionSettings_L2)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) obj;
+            if (!getSrcMacAddress().equals(other.getSrcMacAddress()))
+                return false;
+            if (!getDstMacAddress().equals(other.getDstMacAddress()))
+                return false;
+            if (getEtherType() != other.getEtherType())
+                return false;
+            if (getVlanId() != other.getVlanId())
+                return false;
+            if (getMplsLabel() != other.getMplsLabel())
+                return false;
+            if (getMplsTrafficClass() != other.getMplsTrafficClass())
+                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) + SRC_MAC_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcMacAddress().hashCode();
+            hash = (37 * hash) + DST_MAC_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getDstMacAddress().hashCode();
+            hash = (37 * hash) + ETHER_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getEtherType();
+            hash = (37 * hash) + VLAN_ID_FIELD_NUMBER;
+            hash = (53 * hash) + getVlanId();
+            hash = (37 * hash) + MPLS_LABEL_FIELD_NUMBER;
+            hash = (53 * hash) + getMplsLabel();
+            hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
+            hash = (53 * hash) + getMplsTrafficClass();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionSettings_L2}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L2)
+        context.ContextOuterClass.ConnectionSettings_L2OrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                srcMacAddress_ = "";
+                dstMacAddress_ = "";
+                etherType_ = 0;
+                vlanId_ = 0;
+                mplsLabel_ = 0;
+                mplsTrafficClass_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L2 build() {
+                context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
+                context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcMacAddress_ = srcMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstMacAddress_ = dstMacAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.etherType_ = etherType_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.vlanId_ = vlanId_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.mplsLabel_ = mplsLabel_;
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.mplsTrafficClass_ = mplsTrafficClass_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionSettings_L2) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L2) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L2 other) {
+                if (other == context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance())
+                    return this;
+                if (!other.getSrcMacAddress().isEmpty()) {
+                    srcMacAddress_ = other.srcMacAddress_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                if (!other.getDstMacAddress().isEmpty()) {
+                    dstMacAddress_ = other.dstMacAddress_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.getEtherType() != 0) {
+                    setEtherType(other.getEtherType());
+                }
+                if (other.getVlanId() != 0) {
+                    setVlanId(other.getVlanId());
+                }
+                if (other.getMplsLabel() != 0) {
+                    setMplsLabel(other.getMplsLabel());
+                }
+                if (other.getMplsTrafficClass() != 0) {
+                    setMplsTrafficClass(other.getMplsTrafficClass());
+                }
+                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:
+                                {
+                                    srcMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstMacAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    etherType_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    vlanId_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    mplsLabel_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            case 48:
+                                {
+                                    mplsTrafficClass_ = input.readUInt32();
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 48
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // 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 srcMacAddress_ = "";
+
+            /**
+             * <code>string src_mac_address = 1;</code>
+             * @return The srcMacAddress.
+             */
+            public java.lang.String getSrcMacAddress() {
+                java.lang.Object ref = srcMacAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    srcMacAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string src_mac_address = 1;</code>
+             * @return The bytes for srcMacAddress.
+             */
+            public com.google.protobuf.ByteString getSrcMacAddressBytes() {
+                java.lang.Object ref = srcMacAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    srcMacAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string src_mac_address = 1;</code>
+             * @param value The srcMacAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcMacAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_mac_address = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcMacAddress() {
+                srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_mac_address = 1;</code>
+             * @param value The bytes for srcMacAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcMacAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                srcMacAddress_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object dstMacAddress_ = "";
+
+            /**
+             * <code>string dst_mac_address = 2;</code>
+             * @return The dstMacAddress.
+             */
+            public java.lang.String getDstMacAddress() {
+                java.lang.Object ref = dstMacAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    dstMacAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_mac_address = 2;</code>
+             * @return The bytes for dstMacAddress.
+             */
+            public com.google.protobuf.ByteString getDstMacAddressBytes() {
+                java.lang.Object ref = dstMacAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    dstMacAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_mac_address = 2;</code>
+             * @param value The dstMacAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstMacAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_mac_address = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstMacAddress() {
+                dstMacAddress_ = getDefaultInstance().getDstMacAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_mac_address = 2;</code>
+             * @param value The bytes for dstMacAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstMacAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                dstMacAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private int etherType_;
+
+            /**
+             * <code>uint32 ether_type = 3;</code>
+             * @return The etherType.
+             */
+            @java.lang.Override
+            public int getEtherType() {
+                return etherType_;
+            }
+
+            /**
+             * <code>uint32 ether_type = 3;</code>
+             * @param value The etherType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEtherType(int value) {
+                etherType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 ether_type = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEtherType() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                etherType_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int vlanId_;
+
+            /**
+             * <code>uint32 vlan_id = 4;</code>
+             * @return The vlanId.
+             */
+            @java.lang.Override
+            public int getVlanId() {
+                return vlanId_;
+            }
+
+            /**
+             * <code>uint32 vlan_id = 4;</code>
+             * @param value The vlanId to set.
+             * @return This builder for chaining.
+             */
+            public Builder setVlanId(int value) {
+                vlanId_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 vlan_id = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearVlanId() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                vlanId_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int mplsLabel_;
+
+            /**
+             * <code>uint32 mpls_label = 5;</code>
+             * @return The mplsLabel.
+             */
+            @java.lang.Override
+            public int getMplsLabel() {
+                return mplsLabel_;
+            }
+
+            /**
+             * <code>uint32 mpls_label = 5;</code>
+             * @param value The mplsLabel to set.
+             * @return This builder for chaining.
+             */
+            public Builder setMplsLabel(int value) {
+                mplsLabel_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 mpls_label = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearMplsLabel() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                mplsLabel_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int mplsTrafficClass_;
+
+            /**
+             * <code>uint32 mpls_traffic_class = 6;</code>
+             * @return The mplsTrafficClass.
+             */
+            @java.lang.Override
+            public int getMplsTrafficClass() {
+                return mplsTrafficClass_;
+            }
+
+            /**
+             * <code>uint32 mpls_traffic_class = 6;</code>
+             * @param value The mplsTrafficClass to set.
+             * @return This builder for chaining.
+             */
+            public Builder setMplsTrafficClass(int value) {
+                mplsTrafficClass_ = value;
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 mpls_traffic_class = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearMplsTrafficClass() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                mplsTrafficClass_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
+        private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionSettings_L2> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L2>() {
+
+            @java.lang.Override
+            public ConnectionSettings_L2 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<ConnectionSettings_L2> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionSettings_L2> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionSettings_L3OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string src_ip_address = 1;</code>
+         * @return The srcIpAddress.
+         */
+        java.lang.String getSrcIpAddress();
+
+        /**
+         * <code>string src_ip_address = 1;</code>
+         * @return The bytes for srcIpAddress.
+         */
+        com.google.protobuf.ByteString getSrcIpAddressBytes();
+
+        /**
+         * <code>string dst_ip_address = 2;</code>
+         * @return The dstIpAddress.
+         */
+        java.lang.String getDstIpAddress();
+
+        /**
+         * <code>string dst_ip_address = 2;</code>
+         * @return The bytes for dstIpAddress.
+         */
+        com.google.protobuf.ByteString getDstIpAddressBytes();
+
+        /**
+         * <code>uint32 dscp = 3;</code>
+         * @return The dscp.
+         */
+        int getDscp();
+
+        /**
+         * <code>uint32 protocol = 4;</code>
+         * @return The protocol.
+         */
+        int getProtocol();
+
+        /**
+         * <code>uint32 ttl = 5;</code>
+         * @return The ttl.
+         */
+        int getTtl();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionSettings_L3}
+     */
+    public static final class ConnectionSettings_L3 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
+    ConnectionSettings_L3OrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionSettings_L3.newBuilder() to construct.
+        private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionSettings_L3() {
+            srcIpAddress_ = "";
+            dstIpAddress_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionSettings_L3();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
+        }
+
+        public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object srcIpAddress_ = "";
+
+        /**
+         * <code>string src_ip_address = 1;</code>
+         * @return The srcIpAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getSrcIpAddress() {
+            java.lang.Object ref = srcIpAddress_;
+            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();
+                srcIpAddress_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string src_ip_address = 1;</code>
+         * @return The bytes for srcIpAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getSrcIpAddressBytes() {
+            java.lang.Object ref = srcIpAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                srcIpAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object dstIpAddress_ = "";
+
+        /**
+         * <code>string dst_ip_address = 2;</code>
+         * @return The dstIpAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getDstIpAddress() {
+            java.lang.Object ref = dstIpAddress_;
+            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();
+                dstIpAddress_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string dst_ip_address = 2;</code>
+         * @return The bytes for dstIpAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDstIpAddressBytes() {
+            java.lang.Object ref = dstIpAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                dstIpAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int DSCP_FIELD_NUMBER = 3;
+
+        private int dscp_ = 0;
+
+        /**
+         * <code>uint32 dscp = 3;</code>
+         * @return The dscp.
+         */
+        @java.lang.Override
+        public int getDscp() {
+            return dscp_;
+        }
+
+        public static final int PROTOCOL_FIELD_NUMBER = 4;
+
+        private int protocol_ = 0;
+
+        /**
+         * <code>uint32 protocol = 4;</code>
+         * @return The protocol.
+         */
+        @java.lang.Override
+        public int getProtocol() {
+            return protocol_;
+        }
+
+        public static final int TTL_FIELD_NUMBER = 5;
+
+        private int ttl_ = 0;
+
+        /**
+         * <code>uint32 ttl = 5;</code>
+         * @return The ttl.
+         */
+        @java.lang.Override
+        public int getTtl() {
+            return ttl_;
+        }
+
+        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.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
+            }
+            if (dscp_ != 0) {
+                output.writeUInt32(3, dscp_);
+            }
+            if (protocol_ != 0) {
+                output.writeUInt32(4, protocol_);
+            }
+            if (ttl_ != 0) {
+                output.writeUInt32(5, ttl_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
+            }
+            if (dscp_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, dscp_);
+            }
+            if (protocol_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, protocol_);
+            }
+            if (ttl_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
+            }
+            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 context.ContextOuterClass.ConnectionSettings_L3)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) obj;
+            if (!getSrcIpAddress().equals(other.getSrcIpAddress()))
+                return false;
+            if (!getDstIpAddress().equals(other.getDstIpAddress()))
+                return false;
+            if (getDscp() != other.getDscp())
+                return false;
+            if (getProtocol() != other.getProtocol())
+                return false;
+            if (getTtl() != other.getTtl())
+                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) + SRC_IP_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcIpAddress().hashCode();
+            hash = (37 * hash) + DST_IP_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getDstIpAddress().hashCode();
+            hash = (37 * hash) + DSCP_FIELD_NUMBER;
+            hash = (53 * hash) + getDscp();
+            hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
+            hash = (53 * hash) + getProtocol();
+            hash = (37 * hash) + TTL_FIELD_NUMBER;
+            hash = (53 * hash) + getTtl();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionSettings_L3}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L3)
+        context.ContextOuterClass.ConnectionSettings_L3OrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                srcIpAddress_ = "";
+                dstIpAddress_ = "";
+                dscp_ = 0;
+                protocol_ = 0;
+                ttl_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L3 build() {
+                context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
+                context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcIpAddress_ = srcIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstIpAddress_ = dstIpAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.dscp_ = dscp_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.protocol_ = protocol_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.ttl_ = ttl_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionSettings_L3) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L3) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L3 other) {
+                if (other == context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance())
+                    return this;
+                if (!other.getSrcIpAddress().isEmpty()) {
+                    srcIpAddress_ = other.srcIpAddress_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                if (!other.getDstIpAddress().isEmpty()) {
+                    dstIpAddress_ = other.dstIpAddress_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.getDscp() != 0) {
+                    setDscp(other.getDscp());
+                }
+                if (other.getProtocol() != 0) {
+                    setProtocol(other.getProtocol());
+                }
+                if (other.getTtl() != 0) {
+                    setTtl(other.getTtl());
+                }
+                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:
+                                {
+                                    srcIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    dstIpAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    dscp_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    protocol_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // 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 srcIpAddress_ = "";
+
+            /**
+             * <code>string src_ip_address = 1;</code>
+             * @return The srcIpAddress.
+             */
+            public java.lang.String getSrcIpAddress() {
+                java.lang.Object ref = srcIpAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    srcIpAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string src_ip_address = 1;</code>
+             * @return The bytes for srcIpAddress.
+             */
+            public com.google.protobuf.ByteString getSrcIpAddressBytes() {
+                java.lang.Object ref = srcIpAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    srcIpAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string src_ip_address = 1;</code>
+             * @param value The srcIpAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcIpAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_ip_address = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcIpAddress() {
+                srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string src_ip_address = 1;</code>
+             * @param value The bytes for srcIpAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcIpAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                srcIpAddress_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object dstIpAddress_ = "";
+
+            /**
+             * <code>string dst_ip_address = 2;</code>
+             * @return The dstIpAddress.
+             */
+            public java.lang.String getDstIpAddress() {
+                java.lang.Object ref = dstIpAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    dstIpAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_ip_address = 2;</code>
+             * @return The bytes for dstIpAddress.
+             */
+            public com.google.protobuf.ByteString getDstIpAddressBytes() {
+                java.lang.Object ref = dstIpAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    dstIpAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string dst_ip_address = 2;</code>
+             * @param value The dstIpAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstIpAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_ip_address = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstIpAddress() {
+                dstIpAddress_ = getDefaultInstance().getDstIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string dst_ip_address = 2;</code>
+             * @param value The bytes for dstIpAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstIpAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                dstIpAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private int dscp_;
+
+            /**
+             * <code>uint32 dscp = 3;</code>
+             * @return The dscp.
+             */
+            @java.lang.Override
+            public int getDscp() {
+                return dscp_;
+            }
+
+            /**
+             * <code>uint32 dscp = 3;</code>
+             * @param value The dscp to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDscp(int value) {
+                dscp_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 dscp = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDscp() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                dscp_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int protocol_;
+
+            /**
+             * <code>uint32 protocol = 4;</code>
+             * @return The protocol.
+             */
+            @java.lang.Override
+            public int getProtocol() {
+                return protocol_;
+            }
+
+            /**
+             * <code>uint32 protocol = 4;</code>
+             * @param value The protocol to set.
+             * @return This builder for chaining.
+             */
+            public Builder setProtocol(int value) {
+                protocol_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 protocol = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearProtocol() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                protocol_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int ttl_;
+
+            /**
+             * <code>uint32 ttl = 5;</code>
+             * @return The ttl.
+             */
+            @java.lang.Override
+            public int getTtl() {
+                return ttl_;
+            }
+
+            /**
+             * <code>uint32 ttl = 5;</code>
+             * @param value The ttl to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTtl(int value) {
+                ttl_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 ttl = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                ttl_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L3)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L3)
+        private static final context.ContextOuterClass.ConnectionSettings_L3 DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L3();
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionSettings_L3> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L3>() {
+
+            @java.lang.Override
+            public ConnectionSettings_L3 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<ConnectionSettings_L3> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionSettings_L3> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionSettings_L4OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L4)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>uint32 src_port = 1;</code>
+         * @return The srcPort.
+         */
+        int getSrcPort();
+
+        /**
+         * <code>uint32 dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        int getDstPort();
+
+        /**
+         * <code>uint32 tcp_flags = 3;</code>
+         * @return The tcpFlags.
+         */
+        int getTcpFlags();
+
+        /**
+         * <code>uint32 ttl = 4;</code>
+         * @return The ttl.
+         */
+        int getTtl();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionSettings_L4}
+     */
+    public static final class ConnectionSettings_L4 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L4)
+    ConnectionSettings_L4OrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionSettings_L4.newBuilder() to construct.
+        private ConnectionSettings_L4(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionSettings_L4() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionSettings_L4();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
+        }
+
+        public static final int SRC_PORT_FIELD_NUMBER = 1;
+
+        private int srcPort_ = 0;
+
+        /**
+         * <code>uint32 src_port = 1;</code>
+         * @return The srcPort.
+         */
+        @java.lang.Override
+        public int getSrcPort() {
+            return srcPort_;
+        }
+
+        public static final int DST_PORT_FIELD_NUMBER = 2;
+
+        private int dstPort_ = 0;
+
+        /**
+         * <code>uint32 dst_port = 2;</code>
+         * @return The dstPort.
+         */
+        @java.lang.Override
+        public int getDstPort() {
+            return dstPort_;
+        }
+
+        public static final int TCP_FLAGS_FIELD_NUMBER = 3;
+
+        private int tcpFlags_ = 0;
+
+        /**
+         * <code>uint32 tcp_flags = 3;</code>
+         * @return The tcpFlags.
+         */
+        @java.lang.Override
+        public int getTcpFlags() {
+            return tcpFlags_;
+        }
+
+        public static final int TTL_FIELD_NUMBER = 4;
+
+        private int ttl_ = 0;
+
+        /**
+         * <code>uint32 ttl = 4;</code>
+         * @return The ttl.
+         */
+        @java.lang.Override
+        public int getTtl() {
+            return ttl_;
+        }
+
+        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 (srcPort_ != 0) {
+                output.writeUInt32(1, srcPort_);
+            }
+            if (dstPort_ != 0) {
+                output.writeUInt32(2, dstPort_);
+            }
+            if (tcpFlags_ != 0) {
+                output.writeUInt32(3, tcpFlags_);
+            }
+            if (ttl_ != 0) {
+                output.writeUInt32(4, ttl_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (srcPort_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, srcPort_);
+            }
+            if (dstPort_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, dstPort_);
+            }
+            if (tcpFlags_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, tcpFlags_);
+            }
+            if (ttl_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
+            }
+            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 context.ContextOuterClass.ConnectionSettings_L4)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionSettings_L4 other = (context.ContextOuterClass.ConnectionSettings_L4) obj;
+            if (getSrcPort() != other.getSrcPort())
+                return false;
+            if (getDstPort() != other.getDstPort())
+                return false;
+            if (getTcpFlags() != other.getTcpFlags())
+                return false;
+            if (getTtl() != other.getTtl())
+                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) + SRC_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getSrcPort();
+            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getDstPort();
+            hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER;
+            hash = (53 * hash) + getTcpFlags();
+            hash = (37 * hash) + TTL_FIELD_NUMBER;
+            hash = (53 * hash) + getTtl();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L4 prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionSettings_L4}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L4)
+        context.ContextOuterClass.ConnectionSettings_L4OrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                srcPort_ = 0;
+                dstPort_ = 0;
+                tcpFlags_ = 0;
+                ttl_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L4 build() {
+                context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
+                context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.srcPort_ = srcPort_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.dstPort_ = dstPort_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.tcpFlags_ = tcpFlags_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.ttl_ = ttl_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionSettings_L4) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L4) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L4 other) {
+                if (other == context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance())
+                    return this;
+                if (other.getSrcPort() != 0) {
+                    setSrcPort(other.getSrcPort());
+                }
+                if (other.getDstPort() != 0) {
+                    setDstPort(other.getDstPort());
+                }
+                if (other.getTcpFlags() != 0) {
+                    setTcpFlags(other.getTcpFlags());
+                }
+                if (other.getTtl() != 0) {
+                    setTtl(other.getTtl());
+                }
+                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:
+                                {
+                                    srcPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    dstPort_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    tcpFlags_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    ttl_ = input.readUInt32();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private int srcPort_;
+
+            /**
+             * <code>uint32 src_port = 1;</code>
+             * @return The srcPort.
+             */
+            @java.lang.Override
+            public int getSrcPort() {
+                return srcPort_;
+            }
+
+            /**
+             * <code>uint32 src_port = 1;</code>
+             * @param value The srcPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSrcPort(int value) {
+                srcPort_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 src_port = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSrcPort() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                srcPort_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int dstPort_;
+
+            /**
+             * <code>uint32 dst_port = 2;</code>
+             * @return The dstPort.
+             */
+            @java.lang.Override
+            public int getDstPort() {
+                return dstPort_;
+            }
+
+            /**
+             * <code>uint32 dst_port = 2;</code>
+             * @param value The dstPort to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDstPort(int value) {
+                dstPort_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 dst_port = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDstPort() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                dstPort_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int tcpFlags_;
+
+            /**
+             * <code>uint32 tcp_flags = 3;</code>
+             * @return The tcpFlags.
+             */
+            @java.lang.Override
+            public int getTcpFlags() {
+                return tcpFlags_;
+            }
+
+            /**
+             * <code>uint32 tcp_flags = 3;</code>
+             * @param value The tcpFlags to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTcpFlags(int value) {
+                tcpFlags_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 tcp_flags = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTcpFlags() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                tcpFlags_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private int ttl_;
+
+            /**
+             * <code>uint32 ttl = 4;</code>
+             * @return The ttl.
+             */
+            @java.lang.Override
+            public int getTtl() {
+                return ttl_;
+            }
+
+            /**
+             * <code>uint32 ttl = 4;</code>
+             * @param value The ttl to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTtl(int value) {
+                ttl_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 ttl = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearTtl() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                ttl_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
+        private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionSettings_L4> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L4>() {
+
+            @java.lang.Override
+            public ConnectionSettings_L4 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<ConnectionSettings_L4> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionSettings_L4> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionSettingsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         * @return Whether the l0 field is set.
+         */
+        boolean hasL0();
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         * @return The l0.
+         */
+        context.ContextOuterClass.ConnectionSettings_L0 getL0();
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         */
+        context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         * @return Whether the l2 field is set.
+         */
+        boolean hasL2();
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         * @return The l2.
+         */
+        context.ContextOuterClass.ConnectionSettings_L2 getL2();
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         */
+        context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder();
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         * @return Whether the l3 field is set.
+         */
+        boolean hasL3();
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         * @return The l3.
+         */
+        context.ContextOuterClass.ConnectionSettings_L3 getL3();
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         */
+        context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder();
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         * @return Whether the l4 field is set.
+         */
+        boolean hasL4();
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         * @return The l4.
+         */
+        context.ContextOuterClass.ConnectionSettings_L4 getL4();
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         */
+        context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionSettings}
+     */
+    public static final class ConnectionSettings extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
+    ConnectionSettingsOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionSettings.newBuilder() to construct.
+        private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionSettings() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionSettings();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
+        }
+
+        public static final int L0_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ConnectionSettings_L0 l0_;
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         * @return Whether the l0 field is set.
+         */
+        @java.lang.Override
+        public boolean hasL0() {
+            return l0_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         * @return The l0.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
+            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
+            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+        }
+
+        public static final int L2_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.ConnectionSettings_L2 l2_;
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         * @return Whether the l2 field is set.
+         */
+        @java.lang.Override
+        public boolean hasL2() {
+            return l2_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         * @return The l2.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
+            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
+            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+        }
+
+        public static final int L3_FIELD_NUMBER = 3;
+
+        private context.ContextOuterClass.ConnectionSettings_L3 l3_;
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         * @return Whether the l3 field is set.
+         */
+        @java.lang.Override
+        public boolean hasL3() {
+            return l3_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         * @return The l3.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
+            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
+            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+        }
+
+        public static final int L4_FIELD_NUMBER = 4;
+
+        private context.ContextOuterClass.ConnectionSettings_L4 l4_;
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         * @return Whether the l4 field is set.
+         */
+        @java.lang.Override
+        public boolean hasL4() {
+            return l4_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         * @return The l4.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
+            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
+            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+        }
+
+        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 (l0_ != null) {
+                output.writeMessage(1, getL0());
+            }
+            if (l2_ != null) {
+                output.writeMessage(2, getL2());
+            }
+            if (l3_ != null) {
+                output.writeMessage(3, getL3());
+            }
+            if (l4_ != null) {
+                output.writeMessage(4, getL4());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (l0_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getL0());
+            }
+            if (l2_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getL2());
+            }
+            if (l3_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getL3());
+            }
+            if (l4_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
+            }
+            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 context.ContextOuterClass.ConnectionSettings)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;
+            if (hasL0() != other.hasL0())
+                return false;
+            if (hasL0()) {
+                if (!getL0().equals(other.getL0()))
+                    return false;
+            }
+            if (hasL2() != other.hasL2())
+                return false;
+            if (hasL2()) {
+                if (!getL2().equals(other.getL2()))
+                    return false;
+            }
+            if (hasL3() != other.hasL3())
+                return false;
+            if (hasL3()) {
+                if (!getL3().equals(other.getL3()))
+                    return false;
+            }
+            if (hasL4() != other.hasL4())
+                return false;
+            if (hasL4()) {
+                if (!getL4().equals(other.getL4()))
+                    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 (hasL0()) {
+                hash = (37 * hash) + L0_FIELD_NUMBER;
+                hash = (53 * hash) + getL0().hashCode();
+            }
+            if (hasL2()) {
+                hash = (37 * hash) + L2_FIELD_NUMBER;
+                hash = (53 * hash) + getL2().hashCode();
+            }
+            if (hasL3()) {
+                hash = (37 * hash) + L3_FIELD_NUMBER;
+                hash = (53 * hash) + getL3().hashCode();
+            }
+            if (hasL4()) {
+                hash = (37 * hash) + L4_FIELD_NUMBER;
+                hash = (53 * hash) + getL4().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionSettings}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings)
+        context.ContextOuterClass.ConnectionSettingsOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
+                    l0Builder_ = null;
+                }
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
+                    l2Builder_ = null;
+                }
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
+                    l3Builder_ = null;
+                }
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
+                    l4Builder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings build() {
+                context.ContextOuterClass.ConnectionSettings result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionSettings buildPartial() {
+                context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionSettings) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionSettings) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings other) {
+                if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance())
+                    return this;
+                if (other.hasL0()) {
+                    mergeL0(other.getL0());
+                }
+                if (other.hasL2()) {
+                    mergeL2(other.getL2());
+                }
+                if (other.hasL3()) {
+                    mergeL3(other.getL3());
+                }
+                if (other.hasL4()) {
+                    mergeL4(other.getL4());
+                }
+                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(getL0FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ConnectionSettings_L0 l0_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             * @return Whether the l0 field is set.
+             */
+            public boolean hasL0() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             * @return The l0.
+             */
+            public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
+                if (l0Builder_ == null) {
+                    return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+                } else {
+                    return l0Builder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
+                if (l0Builder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    l0_ = value;
+                } else {
+                    l0Builder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
+                if (l0Builder_ == null) {
+                    l0_ = builderForValue.build();
+                } else {
+                    l0Builder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
+                if (l0Builder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
+                        getL0Builder().mergeFrom(value);
+                    } else {
+                        l0_ = value;
+                    }
+                } else {
+                    l0Builder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public Builder clearL0() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                l0_ = null;
+                if (l0Builder_ != null) {
+                    l0Builder_.dispose();
+                    l0Builder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getL0FieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
+                if (l0Builder_ != null) {
+                    return l0Builder_.getMessageOrBuilder();
+                } else {
+                    return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> getL0FieldBuilder() {
+                if (l0Builder_ == null) {
+                    l0Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder>(getL0(), getParentForChildren(), isClean());
+                    l0_ = null;
+                }
+                return l0Builder_;
+            }
+
+            private context.ContextOuterClass.ConnectionSettings_L2 l2_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             * @return Whether the l2 field is set.
+             */
+            public boolean hasL2() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             * @return The l2.
+             */
+            public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
+                if (l2Builder_ == null) {
+                    return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+                } else {
+                    return l2Builder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
+                if (l2Builder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    l2_ = value;
+                } else {
+                    l2Builder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
+                if (l2Builder_ == null) {
+                    l2_ = builderForValue.build();
+                } else {
+                    l2Builder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
+                if (l2Builder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
+                        getL2Builder().mergeFrom(value);
+                    } else {
+                        l2_ = value;
+                    }
+                } else {
+                    l2Builder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public Builder clearL2() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                l2_ = null;
+                if (l2Builder_ != null) {
+                    l2Builder_.dispose();
+                    l2Builder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getL2FieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
+                if (l2Builder_ != null) {
+                    return l2Builder_.getMessageOrBuilder();
+                } else {
+                    return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> getL2FieldBuilder() {
+                if (l2Builder_ == null) {
+                    l2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder>(getL2(), getParentForChildren(), isClean());
+                    l2_ = null;
+                }
+                return l2Builder_;
+            }
+
+            private context.ContextOuterClass.ConnectionSettings_L3 l3_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> l3Builder_;
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             * @return Whether the l3 field is set.
+             */
+            public boolean hasL3() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             * @return The l3.
+             */
+            public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
+                if (l3Builder_ == null) {
+                    return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+                } else {
+                    return l3Builder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
+                if (l3Builder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    l3_ = value;
+                } else {
+                    l3Builder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
+                if (l3Builder_ == null) {
+                    l3_ = builderForValue.build();
+                } else {
+                    l3Builder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
+                if (l3Builder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
+                        getL3Builder().mergeFrom(value);
+                    } else {
+                        l3_ = value;
+                    }
+                } else {
+                    l3Builder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public Builder clearL3() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                l3_ = null;
+                if (l3Builder_ != null) {
+                    l3Builder_.dispose();
+                    l3Builder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getL3FieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
+                if (l3Builder_ != null) {
+                    return l3Builder_.getMessageOrBuilder();
+                } else {
+                    return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> getL3FieldBuilder() {
+                if (l3Builder_ == null) {
+                    l3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder>(getL3(), getParentForChildren(), isClean());
+                    l3_ = null;
+                }
+                return l3Builder_;
+            }
+
+            private context.ContextOuterClass.ConnectionSettings_L4 l4_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> l4Builder_;
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             * @return Whether the l4 field is set.
+             */
+            public boolean hasL4() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             * @return The l4.
+             */
+            public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
+                if (l4Builder_ == null) {
+                    return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+                } else {
+                    return l4Builder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
+                if (l4Builder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    l4_ = value;
+                } else {
+                    l4Builder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
+                if (l4Builder_ == null) {
+                    l4_ = builderForValue.build();
+                } else {
+                    l4Builder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
+                if (l4Builder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
+                        getL4Builder().mergeFrom(value);
+                    } else {
+                        l4_ = value;
+                    }
+                } else {
+                    l4Builder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public Builder clearL4() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                l4_ = null;
+                if (l4Builder_ != null) {
+                    l4Builder_.dispose();
+                    l4Builder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getL4FieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
+                if (l4Builder_ != null) {
+                    return l4Builder_.getMessageOrBuilder();
+                } else {
+                    return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> getL4FieldBuilder() {
+                if (l4Builder_ == null) {
+                    l4Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder>(getL4(), getParentForChildren(), isClean());
+                    l4_ = null;
+                }
+                return l4Builder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
+        private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
+        }
+
+        public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionSettings> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings>() {
+
+            @java.lang.Override
+            public ConnectionSettings 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<ConnectionSettings> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionSettings> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Connection)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         * @return Whether the connectionId field is set.
+         */
+        boolean hasConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         * @return The connectionId.
+         */
+        context.ContextOuterClass.ConnectionId getConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         */
+        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return Whether the serviceId field is set.
+         */
+        boolean hasServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return The serviceId.
+         */
+        context.ContextOuterClass.ServiceId getServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList();
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index);
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        int getPathHopsEndpointIdsCount();
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index);
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList();
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        context.ContextOuterClass.ServiceId getSubServiceIds(int index);
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        int getSubServiceIdsCount();
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index);
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         * @return Whether the settings field is set.
+         */
+        boolean hasSettings();
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         * @return The settings.
+         */
+        context.ContextOuterClass.ConnectionSettings getSettings();
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         */
+        context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.Connection}
+     */
+    public static final class Connection extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Connection)
+    ConnectionOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Connection.newBuilder() to construct.
+        private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Connection() {
+            pathHopsEndpointIds_ = java.util.Collections.emptyList();
+            subServiceIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Connection();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Connection_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
+        }
+
+        public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.ConnectionId connectionId_;
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         * @return Whether the connectionId field is set.
+         */
+        @java.lang.Override
+        public boolean hasConnectionId() {
+            return connectionId_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         * @return The connectionId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionId getConnectionId() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        public static final int SERVICE_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.ServiceId serviceId_;
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return Whether the serviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceId() {
+            return serviceId_ != null;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         * @return The serviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceId() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        /**
+         * <code>.context.ServiceId service_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+
+        public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
+            return pathHopsEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList() {
+            return pathHopsEndpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getPathHopsEndpointIdsCount() {
+            return pathHopsEndpointIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
+            return pathHopsEndpointIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index) {
+            return pathHopsEndpointIds_.get(index);
+        }
+
+        public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
+            return subServiceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList() {
+            return subServiceIds_;
+        }
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public int getSubServiceIdsCount() {
+            return subServiceIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
+            return subServiceIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index) {
+            return subServiceIds_.get(index);
+        }
+
+        public static final int SETTINGS_FIELD_NUMBER = 5;
+
+        private context.ContextOuterClass.ConnectionSettings settings_;
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         * @return Whether the settings field is set.
+         */
+        @java.lang.Override
+        public boolean hasSettings() {
+            return settings_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         * @return The settings.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettings getSettings() {
+            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+        }
+
+        /**
+         * <code>.context.ConnectionSettings settings = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
+            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+        }
+
+        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 (connectionId_ != null) {
+                output.writeMessage(1, getConnectionId());
+            }
+            if (serviceId_ != null) {
+                output.writeMessage(2, getServiceId());
+            }
+            for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
+                output.writeMessage(3, pathHopsEndpointIds_.get(i));
+            }
+            for (int i = 0; i < subServiceIds_.size(); i++) {
+                output.writeMessage(4, subServiceIds_.get(i));
+            }
+            if (settings_ != null) {
+                output.writeMessage(5, getSettings());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (connectionId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionId());
+            }
+            if (serviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
+            }
+            for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, pathHopsEndpointIds_.get(i));
+            }
+            for (int i = 0; i < subServiceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, subServiceIds_.get(i));
+            }
+            if (settings_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
+            }
+            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 context.ContextOuterClass.Connection)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;
+            if (hasConnectionId() != other.hasConnectionId())
+                return false;
+            if (hasConnectionId()) {
+                if (!getConnectionId().equals(other.getConnectionId()))
+                    return false;
+            }
+            if (hasServiceId() != other.hasServiceId())
+                return false;
+            if (hasServiceId()) {
+                if (!getServiceId().equals(other.getServiceId()))
+                    return false;
+            }
+            if (!getPathHopsEndpointIdsList().equals(other.getPathHopsEndpointIdsList()))
+                return false;
+            if (!getSubServiceIdsList().equals(other.getSubServiceIdsList()))
+                return false;
+            if (hasSettings() != other.hasSettings())
+                return false;
+            if (hasSettings()) {
+                if (!getSettings().equals(other.getSettings()))
+                    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 (hasConnectionId()) {
+                hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionId().hashCode();
+            }
+            if (hasServiceId()) {
+                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceId().hashCode();
+            }
+            if (getPathHopsEndpointIdsCount() > 0) {
+                hash = (37 * hash) + PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getPathHopsEndpointIdsList().hashCode();
+            }
+            if (getSubServiceIdsCount() > 0) {
+                hash = (37 * hash) + SUB_SERVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getSubServiceIdsList().hashCode();
+            }
+            if (hasSettings()) {
+                hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
+                hash = (53 * hash) + getSettings().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Connection}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Connection)
+        context.ContextOuterClass.ConnectionOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Connection_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.Connection.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    pathHopsEndpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    pathHopsEndpointIds_ = null;
+                    pathHopsEndpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (subServiceIdsBuilder_ == null) {
+                    subServiceIds_ = java.util.Collections.emptyList();
+                } else {
+                    subServiceIds_ = null;
+                    subServiceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
+                    settingsBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Connection_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Connection getDefaultInstanceForType() {
+                return context.ContextOuterClass.Connection.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Connection build() {
+                context.ContextOuterClass.Connection result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.Connection buildPartial() {
+                context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
+                } else {
+                    result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
+                }
+                if (subServiceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.subServiceIds_ = subServiceIds_;
+                } else {
+                    result.subServiceIds_ = subServiceIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.Connection result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Connection) {
+                    return mergeFrom((context.ContextOuterClass.Connection) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.Connection other) {
+                if (other == context.ContextOuterClass.Connection.getDefaultInstance())
+                    return this;
+                if (other.hasConnectionId()) {
+                    mergeConnectionId(other.getConnectionId());
+                }
+                if (other.hasServiceId()) {
+                    mergeServiceId(other.getServiceId());
+                }
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    if (!other.pathHopsEndpointIds_.isEmpty()) {
+                        if (pathHopsEndpointIds_.isEmpty()) {
+                            pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensurePathHopsEndpointIdsIsMutable();
+                            pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.pathHopsEndpointIds_.isEmpty()) {
+                        if (pathHopsEndpointIdsBuilder_.isEmpty()) {
+                            pathHopsEndpointIdsBuilder_.dispose();
+                            pathHopsEndpointIdsBuilder_ = null;
+                            pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
+                        } else {
+                            pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
+                        }
+                    }
+                }
+                if (subServiceIdsBuilder_ == null) {
+                    if (!other.subServiceIds_.isEmpty()) {
+                        if (subServiceIds_.isEmpty()) {
+                            subServiceIds_ = other.subServiceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureSubServiceIdsIsMutable();
+                            subServiceIds_.addAll(other.subServiceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.subServiceIds_.isEmpty()) {
+                        if (subServiceIdsBuilder_.isEmpty()) {
+                            subServiceIdsBuilder_.dispose();
+                            subServiceIdsBuilder_ = null;
+                            subServiceIds_ = other.subServiceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
+                        } else {
+                            subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
+                        }
+                    }
+                }
+                if (other.hasSettings()) {
+                    mergeSettings(other.getSettings());
+                }
+                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(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (pathHopsEndpointIdsBuilder_ == null) {
+                                        ensurePathHopsEndpointIdsIsMutable();
+                                        pathHopsEndpointIds_.add(m);
+                                    } else {
+                                        pathHopsEndpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
+                                    if (subServiceIdsBuilder_ == null) {
+                                        ensureSubServiceIdsIsMutable();
+                                        subServiceIds_.add(m);
+                                    } else {
+                                        subServiceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.ConnectionId connectionId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             * @return Whether the connectionId field is set.
+             */
+            public boolean hasConnectionId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             * @return The connectionId.
+             */
+            public context.ContextOuterClass.ConnectionId getConnectionId() {
+                if (connectionIdBuilder_ == null) {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                } else {
+                    return connectionIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    connectionId_ = value;
+                } else {
+                    connectionIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = builderForValue.build();
+                } else {
+                    connectionIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
+                    } else {
+                        connectionId_ = value;
+                    }
+                } else {
+                    connectionIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public Builder clearConnectionId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getConnectionIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+                if (connectionIdBuilder_ != null) {
+                    return connectionIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdFieldBuilder() {
+                if (connectionIdBuilder_ == null) {
+                    connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(getConnectionId(), getParentForChildren(), isClean());
+                    connectionId_ = null;
+                }
+                return connectionIdBuilder_;
+            }
+
+            private context.ContextOuterClass.ServiceId serviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             * @return Whether the serviceId field is set.
+             */
+            public boolean hasServiceId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             * @return The serviceId.
+             */
+            public context.ContextOuterClass.ServiceId getServiceId() {
+                if (serviceIdBuilder_ == null) {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                } else {
+                    return serviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceId_ = value;
+                } else {
+                    serviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = builderForValue.build();
+                } else {
+                    serviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
+                    } else {
+                        serviceId_ = value;
+                    }
+                } else {
+                    serviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public Builder clearServiceId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getServiceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+                if (serviceIdBuilder_ != null) {
+                    return serviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
+                if (serviceIdBuilder_ == null) {
+                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
+                    serviceId_ = null;
+                }
+                return serviceIdBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ = java.util.Collections.emptyList();
+
+            private void ensurePathHopsEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> pathHopsEndpointIdsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+                } else {
+                    return pathHopsEndpointIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public int getPathHopsEndpointIdsCount() {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    return pathHopsEndpointIds_.size();
+                } else {
+                    return pathHopsEndpointIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    return pathHopsEndpointIds_.get(index);
+                } else {
+                    return pathHopsEndpointIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder setPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder setPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.add(value);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder addPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder addPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder addAllPathHopsEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    ensurePathHopsEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, pathHopsEndpointIds_);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder clearPathHopsEndpointIds() {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    pathHopsEndpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public Builder removePathHopsEndpointIds(int index) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    ensurePathHopsEndpointIdsIsMutable();
+                    pathHopsEndpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    pathHopsEndpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getPathHopsEndpointIdsBuilder(int index) {
+                return getPathHopsEndpointIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index) {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    return pathHopsEndpointIds_.get(index);
+                } else {
+                    return pathHopsEndpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList() {
+                if (pathHopsEndpointIdsBuilder_ != null) {
+                    return pathHopsEndpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder() {
+                return getPathHopsEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder(int index) {
+                return getPathHopsEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getPathHopsEndpointIdsBuilderList() {
+                return getPathHopsEndpointIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsFieldBuilder() {
+                if (pathHopsEndpointIdsBuilder_ == null) {
+                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    pathHopsEndpointIds_ = null;
+                }
+                return pathHopsEndpointIdsBuilder_;
+            }
+
+            private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ = java.util.Collections.emptyList();
+
+            private void ensureSubServiceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> subServiceIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
+                if (subServiceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(subServiceIds_);
+                } else {
+                    return subServiceIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public int getSubServiceIdsCount() {
+                if (subServiceIdsBuilder_ == null) {
+                    return subServiceIds_.size();
+                } else {
+                    return subServiceIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
+                if (subServiceIdsBuilder_ == null) {
+                    return subServiceIds_.get(index);
+                } else {
+                    return subServiceIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder setSubServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (subServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder setSubServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (subServiceIdsBuilder_ == null) {
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder addSubServiceIds(context.ContextOuterClass.ServiceId value) {
+                if (subServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.add(value);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder addSubServiceIds(int index, context.ContextOuterClass.ServiceId value) {
+                if (subServiceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder addSubServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (subServiceIdsBuilder_ == null) {
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder addSubServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (subServiceIdsBuilder_ == null) {
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder addAllSubServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
+                if (subServiceIdsBuilder_ == null) {
+                    ensureSubServiceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, subServiceIds_);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder clearSubServiceIds() {
+                if (subServiceIdsBuilder_ == null) {
+                    subServiceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public Builder removeSubServiceIds(int index) {
+                if (subServiceIdsBuilder_ == null) {
+                    ensureSubServiceIdsIsMutable();
+                    subServiceIds_.remove(index);
+                    onChanged();
+                } else {
+                    subServiceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(int index) {
+                return getSubServiceIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index) {
+                if (subServiceIdsBuilder_ == null) {
+                    return subServiceIds_.get(index);
+                } else {
+                    return subServiceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList() {
+                if (subServiceIdsBuilder_ != null) {
+                    return subServiceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(subServiceIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder() {
+                return getSubServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder(int index) {
+                return getSubServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getSubServiceIdsBuilderList() {
+                return getSubServiceIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsFieldBuilder() {
+                if (subServiceIdsBuilder_ == null) {
+                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    subServiceIds_ = null;
+                }
+                return subServiceIdsBuilder_;
+            }
+
+            private context.ContextOuterClass.ConnectionSettings settings_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> settingsBuilder_;
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             * @return Whether the settings field is set.
+             */
+            public boolean hasSettings() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             * @return The settings.
+             */
+            public context.ContextOuterClass.ConnectionSettings getSettings() {
+                if (settingsBuilder_ == null) {
+                    return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+                } else {
+                    return settingsBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
+                if (settingsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    settings_ = value;
+                } else {
+                    settingsBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
+                if (settingsBuilder_ == null) {
+                    settings_ = builderForValue.build();
+                } else {
+                    settingsBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
+                if (settingsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
+                        getSettingsBuilder().mergeFrom(value);
+                    } else {
+                        settings_ = value;
+                    }
+                } else {
+                    settingsBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public Builder clearSettings() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                settings_ = null;
+                if (settingsBuilder_ != null) {
+                    settingsBuilder_.dispose();
+                    settingsBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getSettingsFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
+                if (settingsBuilder_ != null) {
+                    return settingsBuilder_.getMessageOrBuilder();
+                } else {
+                    return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionSettings settings = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> getSettingsFieldBuilder() {
+                if (settingsBuilder_ == null) {
+                    settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder>(getSettings(), getParentForChildren(), isClean());
+                    settings_ = null;
+                }
+                return settingsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Connection)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.Connection)
+        private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
+        }
+
+        public static context.ContextOuterClass.Connection getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Connection> PARSER = new com.google.protobuf.AbstractParser<Connection>() {
+
+            @java.lang.Override
+            public Connection 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<Connection> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Connection> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Connection getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList();
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        context.ContextOuterClass.ConnectionId getConnectionIds(int index);
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        int getConnectionIdsCount();
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionIdList}
+     */
+    public static final class ConnectionIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
+    ConnectionIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionIdList.newBuilder() to construct.
+        private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionIdList() {
+            connectionIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
+        }
+
+        public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
+            return connectionIds_;
+        }
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList() {
+            return connectionIds_;
+        }
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getConnectionIdsCount() {
+            return connectionIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
+            return connectionIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index) {
+            return connectionIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < connectionIds_.size(); i++) {
+                output.writeMessage(1, connectionIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < connectionIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
+            }
+            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 context.ContextOuterClass.ConnectionIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
+            if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
+                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 (getConnectionIdsCount() > 0) {
+                hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionIdList)
+        context.ContextOuterClass.ConnectionIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (connectionIdsBuilder_ == null) {
+                    connectionIds_ = java.util.Collections.emptyList();
+                } else {
+                    connectionIds_ = null;
+                    connectionIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionIdList build() {
+                context.ContextOuterClass.ConnectionIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionIdList buildPartial() {
+                context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
+                if (connectionIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.connectionIds_ = connectionIds_;
+                } else {
+                    result.connectionIds_ = connectionIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionIdList) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionIdList other) {
+                if (other == context.ContextOuterClass.ConnectionIdList.getDefaultInstance())
+                    return this;
+                if (connectionIdsBuilder_ == null) {
+                    if (!other.connectionIds_.isEmpty()) {
+                        if (connectionIds_.isEmpty()) {
+                            connectionIds_ = other.connectionIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureConnectionIdsIsMutable();
+                            connectionIds_.addAll(other.connectionIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.connectionIds_.isEmpty()) {
+                        if (connectionIdsBuilder_.isEmpty()) {
+                            connectionIdsBuilder_.dispose();
+                            connectionIdsBuilder_ = null;
+                            connectionIds_ = other.connectionIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            connectionIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConnectionIdsFieldBuilder() : null;
+                        } else {
+                            connectionIdsBuilder_.addAllMessages(other.connectionIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
+                                    if (connectionIdsBuilder_ == null) {
+                                        ensureConnectionIdsIsMutable();
+                                        connectionIds_.add(m);
+                                    } else {
+                                        connectionIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_ = java.util.Collections.emptyList();
+
+            private void ensureConnectionIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>(connectionIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
+                if (connectionIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(connectionIds_);
+                } else {
+                    return connectionIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public int getConnectionIdsCount() {
+                if (connectionIdsBuilder_ == null) {
+                    return connectionIds_.size();
+                } else {
+                    return connectionIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
+                if (connectionIdsBuilder_ == null) {
+                    return connectionIds_.get(index);
+                } else {
+                    return connectionIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder setConnectionIds(int index, context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.set(index, value);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder setConnectionIds(int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdsBuilder_ == null) {
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.add(value);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder addConnectionIds(int index, context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.add(index, value);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder addConnectionIds(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdsBuilder_ == null) {
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder addConnectionIds(int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdsBuilder_ == null) {
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder addAllConnectionIds(java.lang.Iterable<? extends context.ContextOuterClass.ConnectionId> values) {
+                if (connectionIdsBuilder_ == null) {
+                    ensureConnectionIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, connectionIds_);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder clearConnectionIds() {
+                if (connectionIdsBuilder_ == null) {
+                    connectionIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public Builder removeConnectionIds(int index) {
+                if (connectionIdsBuilder_ == null) {
+                    ensureConnectionIdsIsMutable();
+                    connectionIds_.remove(index);
+                    onChanged();
+                } else {
+                    connectionIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdsBuilder(int index) {
+                return getConnectionIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index) {
+                if (connectionIdsBuilder_ == null) {
+                    return connectionIds_.get(index);
+                } else {
+                    return connectionIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList() {
+                if (connectionIdsBuilder_ != null) {
+                    return connectionIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(connectionIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
+                return getConnectionIdsFieldBuilder().addBuilder(context.ContextOuterClass.ConnectionId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(int index) {
+                return getConnectionIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.ConnectionId.Builder> getConnectionIdsBuilderList() {
+                return getConnectionIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsFieldBuilder() {
+                if (connectionIdsBuilder_ == null) {
+                    connectionIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(connectionIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    connectionIds_ = null;
+                }
+                return connectionIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
+        private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
+        }
+
+        public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionIdList> PARSER = new com.google.protobuf.AbstractParser<ConnectionIdList>() {
+
+            @java.lang.Override
+            public ConnectionIdList 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<ConnectionIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.Connection> getConnectionsList();
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        context.ContextOuterClass.Connection getConnections(int index);
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        int getConnectionsCount();
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList();
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionList}
+     */
+    public static final class ConnectionList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionList)
+    ConnectionListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionList.newBuilder() to construct.
+        private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionList() {
+            connections_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
+        }
+
+        public static final int CONNECTIONS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.Connection> connections_;
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
+            return connections_;
+        }
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList() {
+            return connections_;
+        }
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        @java.lang.Override
+        public int getConnectionsCount() {
+            return connections_.size();
+        }
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Connection getConnections(int index) {
+            return connections_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.Connection connections = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index) {
+            return connections_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < connections_.size(); i++) {
+                output.writeMessage(1, connections_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < connections_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
+            }
+            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 context.ContextOuterClass.ConnectionList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
+            if (!getConnectionsList().equals(other.getConnectionsList()))
+                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 (getConnectionsCount() > 0) {
+                hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionList)
+        context.ContextOuterClass.ConnectionListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (connectionsBuilder_ == null) {
+                    connections_ = java.util.Collections.emptyList();
+                } else {
+                    connections_ = null;
+                    connectionsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionList build() {
+                context.ContextOuterClass.ConnectionList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionList buildPartial() {
+                context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
+                if (connectionsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        connections_ = java.util.Collections.unmodifiableList(connections_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.connections_ = connections_;
+                } else {
+                    result.connections_ = connectionsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionList) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionList other) {
+                if (other == context.ContextOuterClass.ConnectionList.getDefaultInstance())
+                    return this;
+                if (connectionsBuilder_ == null) {
+                    if (!other.connections_.isEmpty()) {
+                        if (connections_.isEmpty()) {
+                            connections_ = other.connections_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureConnectionsIsMutable();
+                            connections_.addAll(other.connections_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.connections_.isEmpty()) {
+                        if (connectionsBuilder_.isEmpty()) {
+                            connectionsBuilder_.dispose();
+                            connectionsBuilder_ = null;
+                            connections_ = other.connections_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            connectionsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConnectionsFieldBuilder() : null;
+                        } else {
+                            connectionsBuilder_.addAllMessages(other.connections_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
+                                    if (connectionsBuilder_ == null) {
+                                        ensureConnectionsIsMutable();
+                                        connections_.add(m);
+                                    } else {
+                                        connectionsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.Connection> connections_ = java.util.Collections.emptyList();
+
+            private void ensureConnectionsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>(connections_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
+                if (connectionsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(connections_);
+                } else {
+                    return connectionsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public int getConnectionsCount() {
+                if (connectionsBuilder_ == null) {
+                    return connections_.size();
+                } else {
+                    return connectionsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public context.ContextOuterClass.Connection getConnections(int index) {
+                if (connectionsBuilder_ == null) {
+                    return connections_.get(index);
+                } else {
+                    return connectionsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder setConnections(int index, context.ContextOuterClass.Connection value) {
+                if (connectionsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionsIsMutable();
+                    connections_.set(index, value);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder setConnections(int index, context.ContextOuterClass.Connection.Builder builderForValue) {
+                if (connectionsBuilder_ == null) {
+                    ensureConnectionsIsMutable();
+                    connections_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder addConnections(context.ContextOuterClass.Connection value) {
+                if (connectionsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionsIsMutable();
+                    connections_.add(value);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder addConnections(int index, context.ContextOuterClass.Connection value) {
+                if (connectionsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureConnectionsIsMutable();
+                    connections_.add(index, value);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder addConnections(context.ContextOuterClass.Connection.Builder builderForValue) {
+                if (connectionsBuilder_ == null) {
+                    ensureConnectionsIsMutable();
+                    connections_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder addConnections(int index, context.ContextOuterClass.Connection.Builder builderForValue) {
+                if (connectionsBuilder_ == null) {
+                    ensureConnectionsIsMutable();
+                    connections_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    connectionsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder addAllConnections(java.lang.Iterable<? extends context.ContextOuterClass.Connection> values) {
+                if (connectionsBuilder_ == null) {
+                    ensureConnectionsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, connections_);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder clearConnections() {
+                if (connectionsBuilder_ == null) {
+                    connections_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public Builder removeConnections(int index) {
+                if (connectionsBuilder_ == null) {
+                    ensureConnectionsIsMutable();
+                    connections_.remove(index);
+                    onChanged();
+                } else {
+                    connectionsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public context.ContextOuterClass.Connection.Builder getConnectionsBuilder(int index) {
+                return getConnectionsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index) {
+                if (connectionsBuilder_ == null) {
+                    return connections_.get(index);
+                } else {
+                    return connectionsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList() {
+                if (connectionsBuilder_ != null) {
+                    return connectionsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(connections_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public context.ContextOuterClass.Connection.Builder addConnectionsBuilder() {
+                return getConnectionsFieldBuilder().addBuilder(context.ContextOuterClass.Connection.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public context.ContextOuterClass.Connection.Builder addConnectionsBuilder(int index) {
+                return getConnectionsFieldBuilder().addBuilder(index, context.ContextOuterClass.Connection.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.Connection connections = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.Connection.Builder> getConnectionsBuilderList() {
+                return getConnectionsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> getConnectionsFieldBuilder() {
+                if (connectionsBuilder_ == null) {
+                    connectionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder>(connections_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    connections_ = null;
+                }
+                return connectionsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionList)
+        private static final context.ContextOuterClass.ConnectionList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionList();
+        }
+
+        public static context.ContextOuterClass.ConnectionList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionList> PARSER = new com.google.protobuf.AbstractParser<ConnectionList>() {
+
+            @java.lang.Override
+            public ConnectionList 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<ConnectionList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConnectionEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionEvent)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        boolean hasEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        context.ContextOuterClass.Event getEvent();
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         * @return Whether the connectionId field is set.
+         */
+        boolean hasConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         * @return The connectionId.
+         */
+        context.ContextOuterClass.ConnectionId getConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         */
+        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.ConnectionEvent}
+     */
+    public static final class ConnectionEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionEvent)
+    ConnectionEventOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConnectionEvent.newBuilder() to construct.
+        private ConnectionEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConnectionEvent() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConnectionEvent();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
+        }
+
+        public static final int EVENT_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Event event_;
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return Whether the event field is set.
+         */
+        @java.lang.Override
+        public boolean hasEvent() {
+            return event_ != null;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         * @return The event.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Event getEvent() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        /**
+         * <code>.context.Event event = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+        }
+
+        public static final int CONNECTION_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.ConnectionId connectionId_;
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         * @return Whether the connectionId field is set.
+         */
+        @java.lang.Override
+        public boolean hasConnectionId() {
+            return connectionId_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         * @return The connectionId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionId getConnectionId() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        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 (event_ != null) {
+                output.writeMessage(1, getEvent());
+            }
+            if (connectionId_ != null) {
+                output.writeMessage(2, getConnectionId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (event_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
+            }
+            if (connectionId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
+            }
+            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 context.ContextOuterClass.ConnectionEvent)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;
+            if (hasEvent() != other.hasEvent())
+                return false;
+            if (hasEvent()) {
+                if (!getEvent().equals(other.getEvent()))
+                    return false;
+            }
+            if (hasConnectionId() != other.hasConnectionId())
+                return false;
+            if (hasConnectionId()) {
+                if (!getConnectionId().equals(other.getConnectionId()))
+                    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 (hasEvent()) {
+                hash = (37 * hash) + EVENT_FIELD_NUMBER;
+                hash = (53 * hash) + getEvent().hashCode();
+            }
+            if (hasConnectionId()) {
+                hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConnectionEvent prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConnectionEvent}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionEvent)
+        context.ContextOuterClass.ConnectionEventOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionEvent build() {
+                context.ContextOuterClass.ConnectionEvent result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConnectionEvent buildPartial() {
+                context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConnectionEvent) {
+                    return mergeFrom((context.ContextOuterClass.ConnectionEvent) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConnectionEvent other) {
+                if (other == context.ContextOuterClass.ConnectionEvent.getDefaultInstance())
+                    return this;
+                if (other.hasEvent()) {
+                    mergeEvent(other.getEvent());
+                }
+                if (other.hasConnectionId()) {
+                    mergeConnectionId(other.getConnectionId());
+                }
+                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(getEventFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Event event_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return Whether the event field is set.
+             */
+            public boolean hasEvent() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             * @return The event.
+             */
+            public context.ContextOuterClass.Event getEvent() {
+                if (eventBuilder_ == null) {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                } else {
+                    return eventBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    event_ = value;
+                } else {
+                    eventBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
+                if (eventBuilder_ == null) {
+                    event_ = builderForValue.build();
+                } else {
+                    eventBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder mergeEvent(context.ContextOuterClass.Event value) {
+                if (eventBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
+                        getEventBuilder().mergeFrom(value);
+                    } else {
+                        event_ = value;
+                    }
+                } else {
+                    eventBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public Builder clearEvent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                event_ = null;
+                if (eventBuilder_ != null) {
+                    eventBuilder_.dispose();
+                    eventBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.Event.Builder getEventBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEventFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
+                if (eventBuilder_ != null) {
+                    return eventBuilder_.getMessageOrBuilder();
+                } else {
+                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
+                }
+            }
+
+            /**
+             * <code>.context.Event event = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
+                if (eventBuilder_ == null) {
+                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
+                    event_ = null;
+                }
+                return eventBuilder_;
+            }
+
+            private context.ContextOuterClass.ConnectionId connectionId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             * @return Whether the connectionId field is set.
+             */
+            public boolean hasConnectionId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             * @return The connectionId.
+             */
+            public context.ContextOuterClass.ConnectionId getConnectionId() {
+                if (connectionIdBuilder_ == null) {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                } else {
+                    return connectionIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    connectionId_ = value;
+                } else {
+                    connectionIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = builderForValue.build();
+                } else {
+                    connectionIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
+                    } else {
+                        connectionId_ = value;
+                    }
+                } else {
+                    connectionIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public Builder clearConnectionId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getConnectionIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+                if (connectionIdBuilder_ != null) {
+                    return connectionIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdFieldBuilder() {
+                if (connectionIdBuilder_ == null) {
+                    connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(getConnectionId(), getParentForChildren(), isClean());
+                    connectionId_ = null;
+                }
+                return connectionIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
+        private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
+        }
+
+        public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConnectionEvent> PARSER = new com.google.protobuf.AbstractParser<ConnectionEvent>() {
+
+            @java.lang.Override
+            public ConnectionEvent 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<ConnectionEvent> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConnectionEvent> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface EndPointIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        boolean hasTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        context.ContextOuterClass.TopologyId getTopologyId();
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return Whether the deviceId field is set.
+         */
+        boolean hasDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return The deviceId.
+         */
+        context.ContextOuterClass.DeviceId getDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         * @return Whether the endpointUuid field is set.
+         */
+        boolean hasEndpointUuid();
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         * @return The endpointUuid.
+         */
+        context.ContextOuterClass.Uuid getEndpointUuid();
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * ----- Endpoint ------------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.EndPointId}
+     */
+    public static final class EndPointId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointId)
+    EndPointIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use EndPointId.newBuilder() to construct.
+        private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private EndPointId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new EndPointId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
+        }
+
+        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.TopologyId topologyId_;
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return Whether the topologyId field is set.
+         */
+        @java.lang.Override
+        public boolean hasTopologyId() {
+            return topologyId_ != null;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         * @return The topologyId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyId getTopologyId() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        /**
+         * <code>.context.TopologyId topology_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+        }
+
+        public static final int DEVICE_ID_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.DeviceId deviceId_;
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return Whether the deviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceId() {
+            return deviceId_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         * @return The deviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceId() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        /**
+         * <code>.context.DeviceId device_id = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
+
+        public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
+
+        private context.ContextOuterClass.Uuid endpointUuid_;
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         * @return Whether the endpointUuid field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointUuid() {
+            return endpointUuid_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         * @return The endpointUuid.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getEndpointUuid() {
+            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+        }
+
+        /**
+         * <code>.context.Uuid endpoint_uuid = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
+            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+        }
+
+        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 (topologyId_ != null) {
+                output.writeMessage(1, getTopologyId());
+            }
+            if (deviceId_ != null) {
+                output.writeMessage(2, getDeviceId());
+            }
+            if (endpointUuid_ != null) {
+                output.writeMessage(3, getEndpointUuid());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (topologyId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
+            }
+            if (deviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId());
+            }
+            if (endpointUuid_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
+            }
+            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 context.ContextOuterClass.EndPointId)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;
+            if (hasTopologyId() != other.hasTopologyId())
+                return false;
+            if (hasTopologyId()) {
+                if (!getTopologyId().equals(other.getTopologyId()))
+                    return false;
+            }
+            if (hasDeviceId() != other.hasDeviceId())
+                return false;
+            if (hasDeviceId()) {
+                if (!getDeviceId().equals(other.getDeviceId()))
+                    return false;
+            }
+            if (hasEndpointUuid() != other.hasEndpointUuid())
+                return false;
+            if (hasEndpointUuid()) {
+                if (!getEndpointUuid().equals(other.getEndpointUuid()))
+                    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 (hasTopologyId()) {
+                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getTopologyId().hashCode();
+            }
+            if (hasDeviceId()) {
+                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceId().hashCode();
+            }
+            if (hasEndpointUuid()) {
+                hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointUuid().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Endpoint ------------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.EndPointId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointId)
+        context.ContextOuterClass.EndPointIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.EndPointId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
+                    endpointUuidBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
+                return context.ContextOuterClass.EndPointId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointId build() {
+                context.ContextOuterClass.EndPointId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointId buildPartial() {
+                context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.EndPointId) {
+                    return mergeFrom((context.ContextOuterClass.EndPointId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.EndPointId other) {
+                if (other == context.ContextOuterClass.EndPointId.getDefaultInstance())
+                    return this;
+                if (other.hasTopologyId()) {
+                    mergeTopologyId(other.getTopologyId());
+                }
+                if (other.hasDeviceId()) {
+                    mergeDeviceId(other.getDeviceId());
+                }
+                if (other.hasEndpointUuid()) {
+                    mergeEndpointUuid(other.getEndpointUuid());
+                }
+                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(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.TopologyId topologyId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return Whether the topologyId field is set.
+             */
+            public boolean hasTopologyId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             * @return The topologyId.
+             */
+            public context.ContextOuterClass.TopologyId getTopologyId() {
+                if (topologyIdBuilder_ == null) {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                } else {
+                    return topologyIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    topologyId_ = value;
+                } else {
+                    topologyIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
+                if (topologyIdBuilder_ == null) {
+                    topologyId_ = builderForValue.build();
+                } else {
+                    topologyIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
+                if (topologyIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
+                        getTopologyIdBuilder().mergeFrom(value);
+                    } else {
+                        topologyId_ = value;
+                    }
+                } else {
+                    topologyIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public Builder clearTopologyId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                topologyId_ = null;
+                if (topologyIdBuilder_ != null) {
+                    topologyIdBuilder_.dispose();
+                    topologyIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getTopologyIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
+                if (topologyIdBuilder_ != null) {
+                    return topologyIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
+                }
+            }
+
+            /**
+             * <code>.context.TopologyId topology_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
+                if (topologyIdBuilder_ == null) {
+                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
+                    topologyId_ = null;
+                }
+                return topologyIdBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceId deviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             * @return Whether the deviceId field is set.
+             */
+            public boolean hasDeviceId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             * @return The deviceId.
+             */
+            public context.ContextOuterClass.DeviceId getDeviceId() {
+                if (deviceIdBuilder_ == null) {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                } else {
+                    return deviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceId_ = value;
+                } else {
+                    deviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = builderForValue.build();
+                } else {
+                    deviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
+                    } else {
+                        deviceId_ = value;
+                    }
+                } else {
+                    deviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public Builder clearDeviceId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getDeviceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+                if (deviceIdBuilder_ != null) {
+                    return deviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
+                if (deviceIdBuilder_ == null) {
+                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
+                    deviceId_ = null;
+                }
+                return deviceIdBuilder_;
+            }
+
+            private context.ContextOuterClass.Uuid endpointUuid_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             * @return Whether the endpointUuid field is set.
+             */
+            public boolean hasEndpointUuid() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             * @return The endpointUuid.
+             */
+            public context.ContextOuterClass.Uuid getEndpointUuid() {
+                if (endpointUuidBuilder_ == null) {
+                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+                } else {
+                    return endpointUuidBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
+                if (endpointUuidBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointUuid_ = value;
+                } else {
+                    endpointUuidBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuid_ = builderForValue.build();
+                } else {
+                    endpointUuidBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
+                if (endpointUuidBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getEndpointUuidBuilder().mergeFrom(value);
+                    } else {
+                        endpointUuid_ = value;
+                    }
+                } else {
+                    endpointUuidBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public Builder clearEndpointUuid() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                endpointUuid_ = null;
+                if (endpointUuidBuilder_ != null) {
+                    endpointUuidBuilder_.dispose();
+                    endpointUuidBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getEndpointUuidFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
+                if (endpointUuidBuilder_ != null) {
+                    return endpointUuidBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid endpoint_uuid = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getEndpointUuidFieldBuilder() {
+                if (endpointUuidBuilder_ == null) {
+                    endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getEndpointUuid(), getParentForChildren(), isClean());
+                    endpointUuid_ = null;
+                }
+                return endpointUuidBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.EndPointId)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.EndPointId)
+        private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
+        }
+
+        public static context.ContextOuterClass.EndPointId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<EndPointId> PARSER = new com.google.protobuf.AbstractParser<EndPointId>() {
+
+            @java.lang.Override
+            public EndPointId 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<EndPointId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<EndPointId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface EndPointOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPoint)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 2;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>string endpoint_type = 3;</code>
+         * @return The endpointType.
+         */
+        java.lang.String getEndpointType();
+
+        /**
+         * <code>string endpoint_type = 3;</code>
+         * @return The bytes for endpointType.
+         */
+        com.google.protobuf.ByteString getEndpointTypeBytes();
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return A list containing the kpiSampleTypes.
+         */
+        java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList();
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return The count of kpiSampleTypes.
+         */
+        int getKpiSampleTypesCount();
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @param index The index of the element to return.
+         * @return The kpiSampleTypes at the given index.
+         */
+        kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index);
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
+         */
+        java.util.List<java.lang.Integer> getKpiSampleTypesValueList();
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+         */
+        int getKpiSampleTypesValue(int index);
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         * @return Whether the endpointLocation field is set.
+         */
+        boolean hasEndpointLocation();
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         * @return The endpointLocation.
+         */
+        context.ContextOuterClass.Location getEndpointLocation();
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         */
+        context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.EndPoint}
+     */
+    public static final class EndPoint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPoint)
+    EndPointOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use EndPoint.newBuilder() to construct.
+        private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private EndPoint() {
+            name_ = "";
+            endpointType_ = "";
+            kpiSampleTypes_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new EndPoint();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
+        }
+
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.EndPointId endpointId_;
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        public static final int NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 2;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 2;</code>
+         * @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 ENDPOINT_TYPE_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
+
+        /**
+         * <code>string endpoint_type = 3;</code>
+         * @return The endpointType.
+         */
+        @java.lang.Override
+        public java.lang.String getEndpointType() {
+            java.lang.Object ref = endpointType_;
+            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();
+                endpointType_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string endpoint_type = 3;</code>
+         * @return The bytes for endpointType.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getEndpointTypeBytes() {
+            java.lang.Object ref = endpointType_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                endpointType_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private java.util.List<java.lang.Integer> kpiSampleTypes_;
+
+        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {
+
+            public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
+                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+            }
+        };
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return A list containing the kpiSampleTypes.
+         */
+        @java.lang.Override
+        public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
+            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
+        }
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return The count of kpiSampleTypes.
+         */
+        @java.lang.Override
+        public int getKpiSampleTypesCount() {
+            return kpiSampleTypes_.size();
+        }
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @param index The index of the element to return.
+         * @return The kpiSampleTypes at the given index.
+         */
+        @java.lang.Override
+        public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
+            return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
+        }
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getKpiSampleTypesValueList() {
+            return kpiSampleTypes_;
+        }
+
+        /**
+         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+         */
+        @java.lang.Override
+        public int getKpiSampleTypesValue(int index) {
+            return kpiSampleTypes_.get(index);
+        }
+
+        private int kpiSampleTypesMemoizedSerializedSize;
+
+        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 5;
+
+        private context.ContextOuterClass.Location endpointLocation_;
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         * @return Whether the endpointLocation field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointLocation() {
+            return endpointLocation_ != null;
+        }
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         * @return The endpointLocation.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Location getEndpointLocation() {
+            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+        }
+
+        /**
+         * <code>.context.Location endpoint_location = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
+            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getSerializedSize();
+            if (endpointId_ != null) {
+                output.writeMessage(1, getEndpointId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
+            }
+            if (getKpiSampleTypesList().size() > 0) {
+                output.writeUInt32NoTag(34);
+                output.writeUInt32NoTag(kpiSampleTypesMemoizedSerializedSize);
+            }
+            for (int i = 0; i < kpiSampleTypes_.size(); i++) {
+                output.writeEnumNoTag(kpiSampleTypes_.get(i));
+            }
+            if (endpointLocation_ != null) {
+                output.writeMessage(5, getEndpointLocation());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
+            }
+            {
+                int dataSize = 0;
+                for (int i = 0; i < kpiSampleTypes_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(kpiSampleTypes_.get(i));
+                }
+                size += dataSize;
+                if (!getKpiSampleTypesList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
+                }
+                kpiSampleTypesMemoizedSerializedSize = dataSize;
+            }
+            if (endpointLocation_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
+            }
+            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 context.ContextOuterClass.EndPoint)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (!getName().equals(other.getName()))
+                return false;
+            if (!getEndpointType().equals(other.getEndpointType()))
+                return false;
+            if (!kpiSampleTypes_.equals(other.kpiSampleTypes_))
+                return false;
+            if (hasEndpointLocation() != other.hasEndpointLocation())
+                return false;
+            if (hasEndpointLocation()) {
+                if (!getEndpointLocation().equals(other.getEndpointLocation()))
+                    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 (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getEndpointType().hashCode();
+            if (getKpiSampleTypesCount() > 0) {
+                hash = (37 * hash) + KPI_SAMPLE_TYPES_FIELD_NUMBER;
+                hash = (53 * hash) + kpiSampleTypes_.hashCode();
+            }
+            if (hasEndpointLocation()) {
+                hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointLocation().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.EndPoint}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPoint)
+        context.ContextOuterClass.EndPointOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.EndPoint.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                name_ = "";
+                endpointType_ = "";
+                kpiSampleTypes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
+                    endpointLocationBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
+                return context.ContextOuterClass.EndPoint.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPoint build() {
+                context.ContextOuterClass.EndPoint result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPoint buildPartial() {
+                context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
+                if (((bitField0_ & 0x00000008) != 0)) {
+                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                }
+                result.kpiSampleTypes_ = kpiSampleTypes_;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.EndPoint) {
+                    return mergeFrom((context.ContextOuterClass.EndPoint) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.EndPoint other) {
+                if (other == context.ContextOuterClass.EndPoint.getDefaultInstance())
+                    return this;
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (!other.getEndpointType().isEmpty()) {
+                    endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (!other.kpiSampleTypes_.isEmpty()) {
+                    if (kpiSampleTypes_.isEmpty()) {
+                        kpiSampleTypes_ = other.kpiSampleTypes_;
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    } else {
+                        ensureKpiSampleTypesIsMutable();
+                        kpiSampleTypes_.addAll(other.kpiSampleTypes_);
+                    }
+                    onChanged();
+                }
+                if (other.hasEndpointLocation()) {
+                    mergeEndpointLocation(other.getEndpointLocation());
+                }
+                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(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 32:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureKpiSampleTypesIsMutable();
+                                    kpiSampleTypes_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 32
+                            case 34:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureKpiSampleTypesIsMutable();
+                                        kpiSampleTypes_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.EndPointId endpointId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
+
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @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_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 2;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object endpointType_ = "";
+
+            /**
+             * <code>string endpoint_type = 3;</code>
+             * @return The endpointType.
+             */
+            public java.lang.String getEndpointType() {
+                java.lang.Object ref = endpointType_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    endpointType_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_type = 3;</code>
+             * @return The bytes for endpointType.
+             */
+            public com.google.protobuf.ByteString getEndpointTypeBytes() {
+                java.lang.Object ref = endpointType_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    endpointType_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_type = 3;</code>
+             * @param value The endpointType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointType(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                endpointType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_type = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEndpointType() {
+                endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_type = 3;</code>
+             * @param value The bytes for endpointType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointTypeBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                endpointType_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<java.lang.Integer> kpiSampleTypes_ = java.util.Collections.emptyList();
+
+            private void ensureKpiSampleTypesIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @return A list containing the kpiSampleTypes.
+             */
+            public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
+                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @return The count of kpiSampleTypes.
+             */
+            public int getKpiSampleTypesCount() {
+                return kpiSampleTypes_.size();
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param index The index of the element to return.
+             * @return The kpiSampleTypes at the given index.
+             */
+            public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
+                return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param index The index to set the value at.
+             * @param value The kpiSampleTypes to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiSampleTypes(int index, kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureKpiSampleTypesIsMutable();
+                kpiSampleTypes_.set(index, value.getNumber());
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param value The kpiSampleTypes to add.
+             * @return This builder for chaining.
+             */
+            public Builder addKpiSampleTypes(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureKpiSampleTypesIsMutable();
+                kpiSampleTypes_.add(value.getNumber());
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param values The kpiSampleTypes to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllKpiSampleTypes(java.lang.Iterable<? extends kpi_sample_types.KpiSampleTypes.KpiSampleType> values) {
+                ensureKpiSampleTypesIsMutable();
+                for (kpi_sample_types.KpiSampleTypes.KpiSampleType value : values) {
+                    kpiSampleTypes_.add(value.getNumber());
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearKpiSampleTypes() {
+                kpiSampleTypes_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
+             */
+            public java.util.List<java.lang.Integer> getKpiSampleTypesValueList() {
+                return java.util.Collections.unmodifiableList(kpiSampleTypes_);
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
+             */
+            public int getKpiSampleTypesValue(int index) {
+                return kpiSampleTypes_.get(index);
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiSampleTypesValue(int index, int value) {
+                ensureKpiSampleTypesIsMutable();
+                kpiSampleTypes_.set(index, value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param value The enum numeric value on the wire for kpiSampleTypes to add.
+             * @return This builder for chaining.
+             */
+            public Builder addKpiSampleTypesValue(int value) {
+                ensureKpiSampleTypesIsMutable();
+                kpiSampleTypes_.add(value);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
+             * @param values The enum numeric values on the wire for kpiSampleTypes to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllKpiSampleTypesValue(java.lang.Iterable<java.lang.Integer> values) {
+                ensureKpiSampleTypesIsMutable();
+                for (int value : values) {
+                    kpiSampleTypes_.add(value);
+                }
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.Location endpointLocation_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> endpointLocationBuilder_;
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             * @return Whether the endpointLocation field is set.
+             */
+            public boolean hasEndpointLocation() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             * @return The endpointLocation.
+             */
+            public context.ContextOuterClass.Location getEndpointLocation() {
+                if (endpointLocationBuilder_ == null) {
+                    return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+                } else {
+                    return endpointLocationBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointLocation_ = value;
+                } else {
+                    endpointLocationBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocation_ = builderForValue.build();
+                } else {
+                    endpointLocationBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getEndpointLocationBuilder().mergeFrom(value);
+                    } else {
+                        endpointLocation_ = value;
+                    }
+                } else {
+                    endpointLocationBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public Builder clearEndpointLocation() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endpointLocation_ = null;
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.dispose();
+                    endpointLocationBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getEndpointLocationFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
+                if (endpointLocationBuilder_ != null) {
+                    return endpointLocationBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
+                }
+            }
+
+            /**
+             * <code>.context.Location endpoint_location = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> getEndpointLocationFieldBuilder() {
+                if (endpointLocationBuilder_ == null) {
+                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(getEndpointLocation(), getParentForChildren(), isClean());
+                    endpointLocation_ = null;
+                }
+                return endpointLocationBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.EndPoint)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.EndPoint)
+        private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
+        }
+
+        public static context.ContextOuterClass.EndPoint getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<EndPoint> PARSER = new com.google.protobuf.AbstractParser<EndPoint>() {
+
+            @java.lang.Override
+            public EndPoint 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<EndPoint> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<EndPoint> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface EndPointNameOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointName)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+
+        /**
+         * <code>string device_name = 2;</code>
+         * @return The deviceName.
+         */
+        java.lang.String getDeviceName();
+
+        /**
+         * <code>string device_name = 2;</code>
+         * @return The bytes for deviceName.
+         */
+        com.google.protobuf.ByteString getDeviceNameBytes();
+
+        /**
+         * <code>string endpoint_name = 3;</code>
+         * @return The endpointName.
+         */
+        java.lang.String getEndpointName();
+
+        /**
+         * <code>string endpoint_name = 3;</code>
+         * @return The bytes for endpointName.
+         */
+        com.google.protobuf.ByteString getEndpointNameBytes();
+
+        /**
+         * <code>string endpoint_type = 4;</code>
+         * @return The endpointType.
+         */
+        java.lang.String getEndpointType();
+
+        /**
+         * <code>string endpoint_type = 4;</code>
+         * @return The bytes for endpointType.
+         */
+        com.google.protobuf.ByteString getEndpointTypeBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.EndPointName}
+     */
+    public static final class EndPointName extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointName)
+    EndPointNameOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use EndPointName.newBuilder() to construct.
+        private EndPointName(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private EndPointName() {
+            deviceName_ = "";
+            endpointName_ = "";
+            endpointType_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new EndPointName();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
+        }
+
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.EndPointId endpointId_;
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        public static final int DEVICE_NAME_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object deviceName_ = "";
+
+        /**
+         * <code>string device_name = 2;</code>
+         * @return The deviceName.
+         */
+        @java.lang.Override
+        public java.lang.String getDeviceName() {
+            java.lang.Object ref = deviceName_;
+            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();
+                deviceName_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string device_name = 2;</code>
+         * @return The bytes for deviceName.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getDeviceNameBytes() {
+            java.lang.Object ref = deviceName_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                deviceName_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointName_ = "";
+
+        /**
+         * <code>string endpoint_name = 3;</code>
+         * @return The endpointName.
+         */
+        @java.lang.Override
+        public java.lang.String getEndpointName() {
+            java.lang.Object ref = endpointName_;
+            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();
+                endpointName_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string endpoint_name = 3;</code>
+         * @return The bytes for endpointName.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getEndpointNameBytes() {
+            java.lang.Object ref = endpointName_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                endpointName_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object endpointType_ = "";
+
+        /**
+         * <code>string endpoint_type = 4;</code>
+         * @return The endpointType.
+         */
+        @java.lang.Override
+        public java.lang.String getEndpointType() {
+            java.lang.Object ref = endpointType_;
+            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();
+                endpointType_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string endpoint_type = 4;</code>
+         * @return The bytes for endpointType.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getEndpointTypeBytes() {
+            java.lang.Object ref = endpointType_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                endpointType_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (endpointId_ != null) {
+                output.writeMessage(1, getEndpointId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
+            }
+            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 context.ContextOuterClass.EndPointName)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.EndPointName other = (context.ContextOuterClass.EndPointName) obj;
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (!getDeviceName().equals(other.getDeviceName()))
+                return false;
+            if (!getEndpointName().equals(other.getEndpointName()))
+                return false;
+            if (!getEndpointType().equals(other.getEndpointType()))
+                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 (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            hash = (37 * hash) + DEVICE_NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getDeviceName().hashCode();
+            hash = (37 * hash) + ENDPOINT_NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getEndpointName().hashCode();
+            hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getEndpointType().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.EndPointName prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.EndPointName}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointName)
+        context.ContextOuterClass.EndPointNameOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.EndPointName.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                deviceName_ = "";
+                endpointName_ = "";
+                endpointType_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
+                return context.ContextOuterClass.EndPointName.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointName build() {
+                context.ContextOuterClass.EndPointName result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointName buildPartial() {
+                context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.deviceName_ = deviceName_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.endpointName_ = endpointName_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.endpointType_ = endpointType_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.EndPointName) {
+                    return mergeFrom((context.ContextOuterClass.EndPointName) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.EndPointName other) {
+                if (other == context.ContextOuterClass.EndPointName.getDefaultInstance())
+                    return this;
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (!other.getDeviceName().isEmpty()) {
+                    deviceName_ = other.deviceName_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (!other.getEndpointName().isEmpty()) {
+                    endpointName_ = other.endpointName_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (!other.getEndpointType().isEmpty()) {
+                    endpointType_ = other.endpointType_;
+                    bitField0_ |= 0x00000008;
+                    onChanged();
+                }
+                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(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    deviceName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    endpointName_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    endpointType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.EndPointId endpointId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
+
+            private java.lang.Object deviceName_ = "";
+
+            /**
+             * <code>string device_name = 2;</code>
+             * @return The deviceName.
+             */
+            public java.lang.String getDeviceName() {
+                java.lang.Object ref = deviceName_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    deviceName_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string device_name = 2;</code>
+             * @return The bytes for deviceName.
+             */
+            public com.google.protobuf.ByteString getDeviceNameBytes() {
+                java.lang.Object ref = deviceName_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    deviceName_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string device_name = 2;</code>
+             * @param value The deviceName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                deviceName_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string device_name = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDeviceName() {
+                deviceName_ = getDefaultInstance().getDeviceName();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string device_name = 2;</code>
+             * @param value The bytes for deviceName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeviceNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                deviceName_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object endpointName_ = "";
+
+            /**
+             * <code>string endpoint_name = 3;</code>
+             * @return The endpointName.
+             */
+            public java.lang.String getEndpointName() {
+                java.lang.Object ref = endpointName_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    endpointName_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_name = 3;</code>
+             * @return The bytes for endpointName.
+             */
+            public com.google.protobuf.ByteString getEndpointNameBytes() {
+                java.lang.Object ref = endpointName_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    endpointName_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_name = 3;</code>
+             * @param value The endpointName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointName(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                endpointName_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_name = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEndpointName() {
+                endpointName_ = getDefaultInstance().getEndpointName();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_name = 3;</code>
+             * @param value The bytes for endpointName to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                endpointName_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object endpointType_ = "";
+
+            /**
+             * <code>string endpoint_type = 4;</code>
+             * @return The endpointType.
+             */
+            public java.lang.String getEndpointType() {
+                java.lang.Object ref = endpointType_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    endpointType_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_type = 4;</code>
+             * @return The bytes for endpointType.
+             */
+            public com.google.protobuf.ByteString getEndpointTypeBytes() {
+                java.lang.Object ref = endpointType_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    endpointType_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string endpoint_type = 4;</code>
+             * @param value The endpointType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointType(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                endpointType_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_type = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearEndpointType() {
+                endpointType_ = getDefaultInstance().getEndpointType();
+                bitField0_ = (bitField0_ & ~0x00000008);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string endpoint_type = 4;</code>
+             * @param value The bytes for endpointType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setEndpointTypeBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                endpointType_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.EndPointName)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.EndPointName)
+        private static final context.ContextOuterClass.EndPointName DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointName();
+        }
+
+        public static context.ContextOuterClass.EndPointName getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<EndPointName> PARSER = new com.google.protobuf.AbstractParser<EndPointName>() {
+
+            @java.lang.Override
+            public EndPointName 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<EndPointName> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<EndPointName> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface EndPointIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointIdList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList();
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        context.ContextOuterClass.EndPointId getEndpointIds(int index);
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        int getEndpointIdsCount();
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.EndPointIdList}
+     */
+    public static final class EndPointIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointIdList)
+    EndPointIdListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use EndPointIdList.newBuilder() to construct.
+        private EndPointIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private EndPointIdList() {
+            endpointIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new EndPointIdList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
+        }
+
+        public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
+            return endpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
+            return endpointIds_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getEndpointIdsCount() {
+            return endpointIds_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
+            return endpointIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
+            return endpointIds_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < endpointIds_.size(); i++) {
+                output.writeMessage(1, endpointIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < endpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
+            }
+            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 context.ContextOuterClass.EndPointIdList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
+            if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
+                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 (getEndpointIdsCount() > 0) {
+                hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.EndPointIdList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.EndPointIdList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointIdList)
+        context.ContextOuterClass.EndPointIdListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (endpointIdsBuilder_ == null) {
+                    endpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    endpointIds_ = null;
+                    endpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
+                return context.ContextOuterClass.EndPointIdList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointIdList build() {
+                context.ContextOuterClass.EndPointIdList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointIdList buildPartial() {
+                context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
+                if (endpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.endpointIds_ = endpointIds_;
+                } else {
+                    result.endpointIds_ = endpointIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.EndPointIdList) {
+                    return mergeFrom((context.ContextOuterClass.EndPointIdList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.EndPointIdList other) {
+                if (other == context.ContextOuterClass.EndPointIdList.getDefaultInstance())
+                    return this;
+                if (endpointIdsBuilder_ == null) {
+                    if (!other.endpointIds_.isEmpty()) {
+                        if (endpointIds_.isEmpty()) {
+                            endpointIds_ = other.endpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureEndpointIdsIsMutable();
+                            endpointIds_.addAll(other.endpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.endpointIds_.isEmpty()) {
+                        if (endpointIdsBuilder_.isEmpty()) {
+                            endpointIdsBuilder_.dispose();
+                            endpointIdsBuilder_ = null;
+                            endpointIds_ = other.endpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
+                        } else {
+                            endpointIdsBuilder_.addAllMessages(other.endpointIds_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();
+
+            private void ensureEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
+                if (endpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(endpointIds_);
+                } else {
+                    return endpointIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public int getEndpointIdsCount() {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.size();
+                } else {
+                    return endpointIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.get(index);
+                } else {
+                    return endpointIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder addEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder addAllEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointIds_);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder clearEndpointIds() {
+                if (endpointIdsBuilder_ == null) {
+                    endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public Builder removeEndpointIds(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(int index) {
+                return getEndpointIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.get(index);
+                } else {
+                    return endpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
+                if (endpointIdsBuilder_ != null) {
+                    return endpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(endpointIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
+                return getEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(int index) {
+                return getEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getEndpointIdsBuilderList() {
+                return getEndpointIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
+                if (endpointIdsBuilder_ == null) {
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    endpointIds_ = null;
+                }
+                return endpointIdsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.EndPointIdList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.EndPointIdList)
+        private static final context.ContextOuterClass.EndPointIdList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointIdList();
+        }
+
+        public static context.ContextOuterClass.EndPointIdList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<EndPointIdList> PARSER = new com.google.protobuf.AbstractParser<EndPointIdList>() {
+
+            @java.lang.Override
+            public EndPointIdList 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<EndPointIdList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<EndPointIdList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface EndPointNameListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointNameList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList();
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        context.ContextOuterClass.EndPointName getEndpointNames(int index);
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        int getEndpointNamesCount();
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList();
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code context.EndPointNameList}
+     */
+    public static final class EndPointNameList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointNameList)
+    EndPointNameListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use EndPointNameList.newBuilder() to construct.
+        private EndPointNameList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private EndPointNameList() {
+            endpointNames_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new EndPointNameList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
+        }
+
+        public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
+            return endpointNames_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList() {
+            return endpointNames_;
+        }
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        @java.lang.Override
+        public int getEndpointNamesCount() {
+            return endpointNames_.size();
+        }
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
+            return endpointNames_.get(index);
+        }
+
+        /**
+         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index) {
+            return endpointNames_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < endpointNames_.size(); i++) {
+                output.writeMessage(1, endpointNames_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < endpointNames_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
+            }
+            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 context.ContextOuterClass.EndPointNameList)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
+            if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
+                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 (getEndpointNamesCount() > 0) {
+                hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointNamesList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.EndPointNameList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.EndPointNameList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointNameList)
+        context.ContextOuterClass.EndPointNameListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (endpointNamesBuilder_ == null) {
+                    endpointNames_ = java.util.Collections.emptyList();
+                } else {
+                    endpointNames_ = null;
+                    endpointNamesBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
+                return context.ContextOuterClass.EndPointNameList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointNameList build() {
+                context.ContextOuterClass.EndPointNameList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.EndPointNameList buildPartial() {
+                context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
+                if (endpointNamesBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.endpointNames_ = endpointNames_;
+                } else {
+                    result.endpointNames_ = endpointNamesBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.EndPointNameList) {
+                    return mergeFrom((context.ContextOuterClass.EndPointNameList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.EndPointNameList other) {
+                if (other == context.ContextOuterClass.EndPointNameList.getDefaultInstance())
+                    return this;
+                if (endpointNamesBuilder_ == null) {
+                    if (!other.endpointNames_.isEmpty()) {
+                        if (endpointNames_.isEmpty()) {
+                            endpointNames_ = other.endpointNames_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureEndpointNamesIsMutable();
+                            endpointNames_.addAll(other.endpointNames_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.endpointNames_.isEmpty()) {
+                        if (endpointNamesBuilder_.isEmpty()) {
+                            endpointNamesBuilder_.dispose();
+                            endpointNamesBuilder_ = null;
+                            endpointNames_ = other.endpointNames_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            endpointNamesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointNamesFieldBuilder() : null;
+                        } else {
+                            endpointNamesBuilder_.addAllMessages(other.endpointNames_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
+                                    if (endpointNamesBuilder_ == null) {
+                                        ensureEndpointNamesIsMutable();
+                                        endpointNames_.add(m);
+                                    } else {
+                                        endpointNamesBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_ = java.util.Collections.emptyList();
+
+            private void ensureEndpointNamesIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>(endpointNames_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> endpointNamesBuilder_;
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
+                if (endpointNamesBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(endpointNames_);
+                } else {
+                    return endpointNamesBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public int getEndpointNamesCount() {
+                if (endpointNamesBuilder_ == null) {
+                    return endpointNames_.size();
+                } else {
+                    return endpointNamesBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
+                if (endpointNamesBuilder_ == null) {
+                    return endpointNames_.get(index);
+                } else {
+                    return endpointNamesBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder setEndpointNames(int index, context.ContextOuterClass.EndPointName value) {
+                if (endpointNamesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.set(index, value);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder setEndpointNames(int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
+                if (endpointNamesBuilder_ == null) {
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder addEndpointNames(context.ContextOuterClass.EndPointName value) {
+                if (endpointNamesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.add(value);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder addEndpointNames(int index, context.ContextOuterClass.EndPointName value) {
+                if (endpointNamesBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.add(index, value);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder addEndpointNames(context.ContextOuterClass.EndPointName.Builder builderForValue) {
+                if (endpointNamesBuilder_ == null) {
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder addEndpointNames(int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
+                if (endpointNamesBuilder_ == null) {
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder addAllEndpointNames(java.lang.Iterable<? extends context.ContextOuterClass.EndPointName> values) {
+                if (endpointNamesBuilder_ == null) {
+                    ensureEndpointNamesIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointNames_);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder clearEndpointNames() {
+                if (endpointNamesBuilder_ == null) {
+                    endpointNames_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public Builder removeEndpointNames(int index) {
+                if (endpointNamesBuilder_ == null) {
+                    ensureEndpointNamesIsMutable();
+                    endpointNames_.remove(index);
+                    onChanged();
+                } else {
+                    endpointNamesBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointName.Builder getEndpointNamesBuilder(int index) {
+                return getEndpointNamesFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index) {
+                if (endpointNamesBuilder_ == null) {
+                    return endpointNames_.get(index);
+                } else {
+                    return endpointNamesBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList() {
+                if (endpointNamesBuilder_ != null) {
+                    return endpointNamesBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(endpointNames_);
+                }
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder() {
+                return getEndpointNamesFieldBuilder().addBuilder(context.ContextOuterClass.EndPointName.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder(int index) {
+                return getEndpointNamesFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointName.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointName.Builder> getEndpointNamesBuilderList() {
+                return getEndpointNamesFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesFieldBuilder() {
+                if (endpointNamesBuilder_ == null) {
+                    endpointNamesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder>(endpointNames_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    endpointNames_ = null;
+                }
+                return endpointNamesBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.EndPointNameList)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.EndPointNameList)
+        private static final context.ContextOuterClass.EndPointNameList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointNameList();
+        }
+
+        public static context.ContextOuterClass.EndPointNameList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<EndPointNameList> PARSER = new com.google.protobuf.AbstractParser<EndPointNameList>() {
+
+            @java.lang.Override
+            public EndPointNameList 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<EndPointNameList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<EndPointNameList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConfigRule_CustomOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule_Custom)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>string resource_key = 1;</code>
+         * @return The resourceKey.
+         */
+        java.lang.String getResourceKey();
+
+        /**
+         * <code>string resource_key = 1;</code>
+         * @return The bytes for resourceKey.
+         */
+        com.google.protobuf.ByteString getResourceKeyBytes();
+
+        /**
+         * <code>string resource_value = 2;</code>
+         * @return The resourceValue.
+         */
+        java.lang.String getResourceValue();
+
+        /**
+         * <code>string resource_value = 2;</code>
+         * @return The bytes for resourceValue.
+         */
+        com.google.protobuf.ByteString getResourceValueBytes();
+    }
+
+    /**
+     * Protobuf type {@code context.ConfigRule_Custom}
+     */
+    public static final class ConfigRule_Custom extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule_Custom)
+    ConfigRule_CustomOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConfigRule_Custom.newBuilder() to construct.
+        private ConfigRule_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConfigRule_Custom() {
+            resourceKey_ = "";
+            resourceValue_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConfigRule_Custom();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
+        }
+
+        public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceKey_ = "";
+
+        /**
+         * <code>string resource_key = 1;</code>
+         * @return The resourceKey.
+         */
+        @java.lang.Override
+        public java.lang.String getResourceKey() {
+            java.lang.Object ref = resourceKey_;
+            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();
+                resourceKey_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string resource_key = 1;</code>
+         * @return The bytes for resourceKey.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getResourceKeyBytes() {
+            java.lang.Object ref = resourceKey_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                resourceKey_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object resourceValue_ = "";
+
+        /**
+         * <code>string resource_value = 2;</code>
+         * @return The resourceValue.
+         */
+        @java.lang.Override
+        public java.lang.String getResourceValue() {
+            java.lang.Object ref = resourceValue_;
+            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();
+                resourceValue_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string resource_value = 2;</code>
+         * @return The bytes for resourceValue.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getResourceValueBytes() {
+            java.lang.Object ref = resourceValue_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                resourceValue_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
+            }
+            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 context.ContextOuterClass.ConfigRule_Custom)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConfigRule_Custom other = (context.ContextOuterClass.ConfigRule_Custom) obj;
+            if (!getResourceKey().equals(other.getResourceKey()))
+                return false;
+            if (!getResourceValue().equals(other.getResourceValue()))
+                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) + RESOURCE_KEY_FIELD_NUMBER;
+            hash = (53 * hash) + getResourceKey().hashCode();
+            hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
+            hash = (53 * hash) + getResourceValue().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConfigRule_Custom prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConfigRule_Custom}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule_Custom)
+        context.ContextOuterClass.ConfigRule_CustomOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                resourceKey_ = "";
+                resourceValue_ = "";
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_Custom build() {
+                context.ContextOuterClass.ConfigRule_Custom result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
+                context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.resourceKey_ = resourceKey_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.resourceValue_ = resourceValue_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConfigRule_Custom) {
+                    return mergeFrom((context.ContextOuterClass.ConfigRule_Custom) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConfigRule_Custom other) {
+                if (other == context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance())
+                    return this;
+                if (!other.getResourceKey().isEmpty()) {
+                    resourceKey_ = other.resourceKey_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                if (!other.getResourceValue().isEmpty()) {
+                    resourceValue_ = other.resourceValue_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                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:
+                                {
+                                    resourceKey_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    resourceValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // 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 resourceKey_ = "";
+
+            /**
+             * <code>string resource_key = 1;</code>
+             * @return The resourceKey.
+             */
+            public java.lang.String getResourceKey() {
+                java.lang.Object ref = resourceKey_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    resourceKey_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string resource_key = 1;</code>
+             * @return The bytes for resourceKey.
+             */
+            public com.google.protobuf.ByteString getResourceKeyBytes() {
+                java.lang.Object ref = resourceKey_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    resourceKey_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string resource_key = 1;</code>
+             * @param value The resourceKey to set.
+             * @return This builder for chaining.
+             */
+            public Builder setResourceKey(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                resourceKey_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string resource_key = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearResourceKey() {
+                resourceKey_ = getDefaultInstance().getResourceKey();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string resource_key = 1;</code>
+             * @param value The bytes for resourceKey to set.
+             * @return This builder for chaining.
+             */
+            public Builder setResourceKeyBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                resourceKey_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            private java.lang.Object resourceValue_ = "";
+
+            /**
+             * <code>string resource_value = 2;</code>
+             * @return The resourceValue.
+             */
+            public java.lang.String getResourceValue() {
+                java.lang.Object ref = resourceValue_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    resourceValue_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string resource_value = 2;</code>
+             * @return The bytes for resourceValue.
+             */
+            public com.google.protobuf.ByteString getResourceValueBytes() {
+                java.lang.Object ref = resourceValue_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    resourceValue_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string resource_value = 2;</code>
+             * @param value The resourceValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setResourceValue(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                resourceValue_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string resource_value = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearResourceValue() {
+                resourceValue_ = getDefaultInstance().getResourceValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string resource_value = 2;</code>
+             * @param value The bytes for resourceValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setResourceValueBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                resourceValue_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConfigRule_Custom)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConfigRule_Custom)
+        private static final context.ContextOuterClass.ConfigRule_Custom DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_Custom();
+        }
+
+        public static context.ContextOuterClass.ConfigRule_Custom getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConfigRule_Custom> PARSER = new com.google.protobuf.AbstractParser<ConfigRule_Custom>() {
+
+            @java.lang.Override
+            public ConfigRule_Custom 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<ConfigRule_Custom> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConfigRule_Custom> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConfigRule_ACLOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule_ACL)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         * @return Whether the ruleSet field is set.
+         */
+        boolean hasRuleSet();
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         * @return The ruleSet.
+         */
+        acl.Acl.AclRuleSet getRuleSet();
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         */
+        acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code context.ConfigRule_ACL}
      */
-    java.lang.String getName();
+    public static final class ConfigRule_ACL extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule_ACL)
+    ConfigRule_ACLOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConfigRule_ACL.newBuilder() to construct.
+        private ConfigRule_ACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConfigRule_ACL() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConfigRule_ACL();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
+        }
+
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.EndPointId endpointId_;
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        public static final int RULE_SET_FIELD_NUMBER = 2;
+
+        private acl.Acl.AclRuleSet ruleSet_;
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         * @return Whether the ruleSet field is set.
+         */
+        @java.lang.Override
+        public boolean hasRuleSet() {
+            return ruleSet_ != null;
+        }
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         * @return The ruleSet.
+         */
+        @java.lang.Override
+        public acl.Acl.AclRuleSet getRuleSet() {
+            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+        }
+
+        /**
+         * <code>.acl.AclRuleSet rule_set = 2;</code>
+         */
+        @java.lang.Override
+        public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
+            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+        }
+
+        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 (endpointId_ != null) {
+                output.writeMessage(1, getEndpointId());
+            }
+            if (ruleSet_ != null) {
+                output.writeMessage(2, getRuleSet());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
+            }
+            if (ruleSet_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
+            }
+            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 context.ContextOuterClass.ConfigRule_ACL)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConfigRule_ACL other = (context.ContextOuterClass.ConfigRule_ACL) obj;
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (hasRuleSet() != other.hasRuleSet())
+                return false;
+            if (hasRuleSet()) {
+                if (!getRuleSet().equals(other.getRuleSet()))
+                    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 (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            if (hasRuleSet()) {
+                hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
+                hash = (53 * hash) + getRuleSet().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(context.ContextOuterClass.ConfigRule_ACL prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.ConfigRule_ACL}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule_ACL)
+        context.ContextOuterClass.ConfigRule_ACLOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
+                    ruleSetBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_ACL build() {
+                context.ContextOuterClass.ConfigRule_ACL result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
+                context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConfigRule_ACL) {
+                    return mergeFrom((context.ContextOuterClass.ConfigRule_ACL) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(context.ContextOuterClass.ConfigRule_ACL other) {
+                if (other == context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance())
+                    return this;
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (other.hasRuleSet()) {
+                    mergeRuleSet(other.getRuleSet());
+                }
+                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(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.EndPointId endpointId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
+
+            private acl.Acl.AclRuleSet ruleSet_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> ruleSetBuilder_;
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             * @return Whether the ruleSet field is set.
+             */
+            public boolean hasRuleSet() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             * @return The ruleSet.
+             */
+            public acl.Acl.AclRuleSet getRuleSet() {
+                if (ruleSetBuilder_ == null) {
+                    return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+                } else {
+                    return ruleSetBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public Builder setRuleSet(acl.Acl.AclRuleSet value) {
+                if (ruleSetBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ruleSet_ = value;
+                } else {
+                    ruleSetBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
+                if (ruleSetBuilder_ == null) {
+                    ruleSet_ = builderForValue.build();
+                } else {
+                    ruleSetBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
+                if (ruleSetBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
+                        getRuleSetBuilder().mergeFrom(value);
+                    } else {
+                        ruleSet_ = value;
+                    }
+                } else {
+                    ruleSetBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public Builder clearRuleSet() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                ruleSet_ = null;
+                if (ruleSetBuilder_ != null) {
+                    ruleSetBuilder_.dispose();
+                    ruleSetBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getRuleSetFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
+                if (ruleSetBuilder_ != null) {
+                    return ruleSetBuilder_.getMessageOrBuilder();
+                } else {
+                    return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
+                }
+            }
+
+            /**
+             * <code>.acl.AclRuleSet rule_set = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> getRuleSetFieldBuilder() {
+                if (ruleSetBuilder_ == null) {
+                    ruleSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder>(getRuleSet(), getParentForChildren(), isClean());
+                    ruleSet_ = null;
+                }
+                return ruleSetBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConfigRule_ACL)
+        }
+
+        // @@protoc_insertion_point(class_scope:context.ConfigRule_ACL)
+        private static final context.ContextOuterClass.ConfigRule_ACL DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_ACL();
+        }
+
+        public static context.ContextOuterClass.ConfigRule_ACL getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<ConfigRule_ACL> PARSER = new com.google.protobuf.AbstractParser<ConfigRule_ACL>() {
+
+            @java.lang.Override
+            public ConfigRule_ACL 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<ConfigRule_ACL> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConfigRule_ACL> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConfigRuleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ConfigActionEnum action = 1;</code>
+         * @return The enum numeric value on the wire for action.
+         */
+        int getActionValue();
+
+        /**
+         * <code>.context.ConfigActionEnum action = 1;</code>
+         * @return The action.
+         */
+        context.ContextOuterClass.ConfigActionEnum getAction();
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         * @return Whether the custom field is set.
+         */
+        boolean hasCustom();
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         * @return The custom.
+         */
+        context.ContextOuterClass.ConfigRule_Custom getCustom();
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         */
+        context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder();
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         * @return Whether the acl field is set.
+         */
+        boolean hasAcl();
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         * @return The acl.
+         */
+        context.ContextOuterClass.ConfigRule_ACL getAcl();
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         */
+        context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
+
+        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
+    }
+
     /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
+     * Protobuf type {@code context.ConfigRule}
      */
-    com.google.protobuf.ByteString
-        getNameBytes();
+    public static final class ConfigRule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule)
+    ConfigRuleOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use ConfigRule.newBuilder() to construct.
+        private ConfigRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private ConfigRule() {
+            action_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new ConfigRule();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
+        }
+
+        private int configRuleCase_ = 0;
+
+        @SuppressWarnings("serial")
+        private java.lang.Object configRule_;
+
+        public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+
+            CUSTOM(2), ACL(3), CONFIGRULE_NOT_SET(0);
+
+            private final int value;
+
+            private ConfigRuleCase(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 ConfigRuleCase valueOf(int value) {
+                return forNumber(value);
+            }
+
+            public static ConfigRuleCase forNumber(int value) {
+                switch(value) {
+                    case 2:
+                        return CUSTOM;
+                    case 3:
+                        return ACL;
+                    case 0:
+                        return CONFIGRULE_NOT_SET;
+                    default:
+                        return null;
+                }
+            }
+
+            public int getNumber() {
+                return this.value;
+            }
+        }
+
+        public ConfigRuleCase getConfigRuleCase() {
+            return ConfigRuleCase.forNumber(configRuleCase_);
+        }
+
+        public static final int ACTION_FIELD_NUMBER = 1;
+
+        private int action_ = 0;
+
+        /**
+         * <code>.context.ConfigActionEnum action = 1;</code>
+         * @return The enum numeric value on the wire for action.
+         */
+        @java.lang.Override
+        public int getActionValue() {
+            return action_;
+        }
+
+        /**
+         * <code>.context.ConfigActionEnum action = 1;</code>
+         * @return The action.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigActionEnum getAction() {
+            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+            return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
+        }
+
+        public static final int CUSTOM_FIELD_NUMBER = 2;
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         * @return Whether the custom field is set.
+         */
+        @java.lang.Override
+        public boolean hasCustom() {
+            return configRuleCase_ == 2;
+        }
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         * @return The custom.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_Custom getCustom() {
+            if (configRuleCase_ == 2) {
+                return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
+            }
+            return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+        }
+
+        /**
+         * <code>.context.ConfigRule_Custom custom = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
+            if (configRuleCase_ == 2) {
+                return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
+            }
+            return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+        }
+
+        public static final int ACL_FIELD_NUMBER = 3;
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         * @return Whether the acl field is set.
+         */
+        @java.lang.Override
+        public boolean hasAcl() {
+            return configRuleCase_ == 3;
+        }
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         * @return The acl.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_ACL getAcl() {
+            if (configRuleCase_ == 3) {
+                return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
+            }
+            return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+        }
+
+        /**
+         * <code>.context.ConfigRule_ACL acl = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
+            if (configRuleCase_ == 3) {
+                return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
+            }
+            return context.ContextOuterClass.ConfigRule_ACL.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 (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
+                output.writeEnum(1, action_);
+            }
+            if (configRuleCase_ == 2) {
+                output.writeMessage(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
+            }
+            if (configRuleCase_ == 3) {
+                output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
+            }
+            if (configRuleCase_ == 2) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
+            }
+            if (configRuleCase_ == 3) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
+            }
+            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 context.ContextOuterClass.ConfigRule)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.ConfigRule other = (context.ContextOuterClass.ConfigRule) obj;
+            if (action_ != other.action_)
+                return false;
+            if (!getConfigRuleCase().equals(other.getConfigRuleCase()))
+                return false;
+            switch(configRuleCase_) {
+                case 2:
+                    if (!getCustom().equals(other.getCustom()))
+                        return false;
+                    break;
+                case 3:
+                    if (!getAcl().equals(other.getAcl()))
+                        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();
+            hash = (37 * hash) + ACTION_FIELD_NUMBER;
+            hash = (53 * hash) + action_;
+            switch(configRuleCase_) {
+                case 2:
+                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
+                    hash = (53 * hash) + getCustom().hashCode();
+                    break;
+                case 3:
+                    hash = (37 * hash) + ACL_FIELD_NUMBER;
+                    hash = (53 * hash) + getAcl().hashCode();
+                    break;
+                case 0:
+                default:
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>string device_type = 3;</code>
-     * @return The deviceType.
-     */
-    java.lang.String getDeviceType();
-    /**
-     * <code>string device_type = 3;</code>
-     * @return The bytes for deviceType.
-     */
-    com.google.protobuf.ByteString
-        getDeviceTypeBytes();
+        public static context.ContextOuterClass.ConfigRule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     * @return Whether the deviceConfig field is set.
-     */
-    boolean hasDeviceConfig();
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     * @return The deviceConfig.
-     */
-    context.ContextOuterClass.DeviceConfig getDeviceConfig();
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     */
-    context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
+        public static context.ContextOuterClass.ConfigRule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-     * @return The enum numeric value on the wire for deviceOperationalStatus.
-     */
-    int getDeviceOperationalStatusValue();
-    /**
-     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-     * @return The deviceOperationalStatus.
-     */
-    context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus();
+        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return A list containing the deviceDrivers.
-     */
-    java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList();
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return The count of deviceDrivers.
-     */
-    int getDeviceDriversCount();
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @param index The index of the element to return.
-     * @return The deviceDrivers at the given index.
-     */
-    context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index);
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return A list containing the enum numeric values on the wire for deviceDrivers.
-     */
-    java.util.List<java.lang.Integer>
-    getDeviceDriversValueList();
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of deviceDrivers at the given index.
-     */
-    int getDeviceDriversValue(int index);
+        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPoint> 
-        getDeviceEndpointsList();
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    context.ContextOuterClass.EndPoint getDeviceEndpoints(int index);
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    int getDeviceEndpointsCount();
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
-        getDeviceEndpointsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    java.util.List<context.ContextOuterClass.Component> 
-        getComponentsList();
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    context.ContextOuterClass.Component getComponents(int index);
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    int getComponentsCount();
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentsOrBuilderList();
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     * @return Whether the controllerId field is set.
-     */
-    boolean hasControllerId();
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     * @return The controllerId.
-     */
-    context.ContextOuterClass.DeviceId getControllerId();
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Device}
-   */
-  public static final class Device extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Device)
-      DeviceOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Device.newBuilder() to construct.
-    private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Device() {
-      name_ = "";
-      deviceType_ = "";
-      deviceOperationalStatus_ = 0;
-      deviceDrivers_ = java.util.Collections.emptyList();
-      deviceEndpoints_ = java.util.Collections.emptyList();
-      components_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Device();
-    }
+        public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Device(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              deviceType_ = s;
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-              if (deviceConfig_ != null) {
-                subBuilder = deviceConfig_.toBuilder();
-              }
-              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceConfig_);
-                deviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 40: {
-              int rawValue = input.readEnum();
-
-              deviceOperationalStatus_ = rawValue;
-              break;
-            }
-            case 48: {
-              int rawValue = input.readEnum();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deviceDrivers_.add(rawValue);
-              break;
-            }
-            case 50: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                deviceDrivers_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-            case 58: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              deviceEndpoints_.add(
-                  input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry));
-              break;
-            }
-            case 66: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                components_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              components_.add(
-                  input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (controllerId_ != null) {
-                subBuilder = controllerId_.toBuilder();
-              }
-              controllerId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(controllerId_);
-                controllerId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          components_ = java.util.Collections.unmodifiableList(components_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Device_descriptor;
-    }
+        public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
-    }
+        public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
-    }
+        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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 context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int DEVICE_TYPE_FIELD_NUMBER = 3;
-    private volatile java.lang.Object deviceType_;
-    /**
-     * <code>string device_type = 3;</code>
-     * @return The deviceType.
-     */
-    @java.lang.Override
-    public java.lang.String getDeviceType() {
-      java.lang.Object ref = deviceType_;
-      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();
-        deviceType_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string device_type = 3;</code>
-     * @return The bytes for deviceType.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getDeviceTypeBytes() {
-      java.lang.Object ref = deviceType_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        deviceType_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static final int DEVICE_CONFIG_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.DeviceConfig deviceConfig_;
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     * @return Whether the deviceConfig field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceConfig() {
-      return deviceConfig_ != null;
-    }
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     * @return The deviceConfig.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
-      return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-    }
-    /**
-     * <code>.context.DeviceConfig device_config = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-      return getDeviceConfig();
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;
-    private int deviceOperationalStatus_;
-    /**
-     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-     * @return The enum numeric value on the wire for deviceOperationalStatus.
-     */
-    @java.lang.Override public int getDeviceOperationalStatusValue() {
-      return deviceOperationalStatus_;
-    }
-    /**
-     * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-     * @return The deviceOperationalStatus.
-     */
-    @java.lang.Override public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
-      return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.ConfigRule prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;
-    private java.util.List<java.lang.Integer> deviceDrivers_;
-    private static final com.google.protobuf.Internal.ListAdapter.Converter<
-        java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ =
-            new com.google.protobuf.Internal.ListAdapter.Converter<
-                java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {
-              public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.valueOf(from);
-                return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
-              }
-            };
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return A list containing the deviceDrivers.
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
-      return new com.google.protobuf.Internal.ListAdapter<
-          java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
-    }
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return The count of deviceDrivers.
-     */
-    @java.lang.Override
-    public int getDeviceDriversCount() {
-      return deviceDrivers_.size();
-    }
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @param index The index of the element to return.
-     * @return The deviceDrivers at the given index.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
-      return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
-    }
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @return A list containing the enum numeric values on the wire for deviceDrivers.
-     */
-    @java.lang.Override
-    public java.util.List<java.lang.Integer>
-    getDeviceDriversValueList() {
-      return deviceDrivers_;
-    }
-    /**
-     * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of deviceDrivers at the given index.
-     */
-    @java.lang.Override
-    public int getDeviceDriversValue(int index) {
-      return deviceDrivers_.get(index);
-    }
-    private int deviceDriversMemoizedSerializedSize;
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;
-    private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
-      return deviceEndpoints_;
-    }
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
-        getDeviceEndpointsOrBuilderList() {
-      return deviceEndpoints_;
-    }
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    @java.lang.Override
-    public int getDeviceEndpointsCount() {
-      return deviceEndpoints_.size();
-    }
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
-      return deviceEndpoints_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
-        int index) {
-      return deviceEndpoints_.get(index);
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static final int COMPONENTS_FIELD_NUMBER = 8;
-    private java.util.List<context.ContextOuterClass.Component> components_;
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
-      return components_;
-    }
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentsOrBuilderList() {
-      return components_;
-    }
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    @java.lang.Override
-    public int getComponentsCount() {
-      return components_.size();
-    }
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Component getComponents(int index) {
-      return components_.get(index);
-    }
-    /**
-     * <pre>
-     * Used for inventory
-     * </pre>
-     *
-     * <code>repeated .context.Component components = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
-        int index) {
-      return components_.get(index);
-    }
+        /**
+         * Protobuf type {@code context.ConfigRule}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule)
+        context.ContextOuterClass.ConfigRuleOrBuilder {
 
-    public static final int CONTROLLER_ID_FIELD_NUMBER = 9;
-    private context.ContextOuterClass.DeviceId controllerId_;
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     * @return Whether the controllerId field is set.
-     */
-    @java.lang.Override
-    public boolean hasControllerId() {
-      return controllerId_ != null;
-    }
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     * @return The controllerId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getControllerId() {
-      return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
-    }
-    /**
-     * <pre>
-     * Identifier of node controlling the actual device
-     * </pre>
-     *
-     * <code>.context.DeviceId controller_id = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
-      return getControllerId();
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (deviceId_ != null) {
-        output.writeMessage(1, getDeviceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (!getDeviceTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
-      }
-      if (deviceConfig_ != null) {
-        output.writeMessage(4, getDeviceConfig());
-      }
-      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
-        output.writeEnum(5, deviceOperationalStatus_);
-      }
-      if (getDeviceDriversList().size() > 0) {
-        output.writeUInt32NoTag(50);
-        output.writeUInt32NoTag(deviceDriversMemoizedSerializedSize);
-      }
-      for (int i = 0; i < deviceDrivers_.size(); i++) {
-        output.writeEnumNoTag(deviceDrivers_.get(i));
-      }
-      for (int i = 0; i < deviceEndpoints_.size(); i++) {
-        output.writeMessage(7, deviceEndpoints_.get(i));
-      }
-      for (int i = 0; i < components_.size(); i++) {
-        output.writeMessage(8, components_.get(i));
-      }
-      if (controllerId_ != null) {
-        output.writeMessage(9, getControllerId());
-      }
-      unknownFields.writeTo(output);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDeviceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (!getDeviceTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
-      }
-      if (deviceConfig_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getDeviceConfig());
-      }
-      if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(5, deviceOperationalStatus_);
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < deviceDrivers_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeEnumSizeNoTag(deviceDrivers_.get(i));
-        }
-        size += dataSize;
-        if (!getDeviceDriversList().isEmpty()) {  size += 1;
-          size += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(dataSize);
-        }deviceDriversMemoizedSerializedSize = dataSize;
-      }
-      for (int i = 0; i < deviceEndpoints_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, deviceEndpoints_.get(i));
-      }
-      for (int i = 0; i < components_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, components_.get(i));
-      }
-      if (controllerId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, getControllerId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (aclBuilder_ != null) {
+                    aclBuilder_.clear();
+                }
+                configRuleCase_ = 0;
+                configRule_ = null;
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Device)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;
-
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getDeviceType()
-          .equals(other.getDeviceType())) return false;
-      if (hasDeviceConfig() != other.hasDeviceConfig()) return false;
-      if (hasDeviceConfig()) {
-        if (!getDeviceConfig()
-            .equals(other.getDeviceConfig())) return false;
-      }
-      if (deviceOperationalStatus_ != other.deviceOperationalStatus_) return false;
-      if (!deviceDrivers_.equals(other.deviceDrivers_)) return false;
-      if (!getDeviceEndpointsList()
-          .equals(other.getDeviceEndpointsList())) return false;
-      if (!getComponentsList()
-          .equals(other.getComponentsList())) return false;
-      if (hasControllerId() != other.hasControllerId()) return false;
-      if (hasControllerId()) {
-        if (!getControllerId()
-            .equals(other.getControllerId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      hash = (37 * hash) + DEVICE_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getDeviceType().hashCode();
-      if (hasDeviceConfig()) {
-        hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceConfig().hashCode();
-      }
-      hash = (37 * hash) + DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER;
-      hash = (53 * hash) + deviceOperationalStatus_;
-      if (getDeviceDriversCount() > 0) {
-        hash = (37 * hash) + DEVICE_DRIVERS_FIELD_NUMBER;
-        hash = (53 * hash) + deviceDrivers_.hashCode();
-      }
-      if (getDeviceEndpointsCount() > 0) {
-        hash = (37 * hash) + DEVICE_ENDPOINTS_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceEndpointsList().hashCode();
-      }
-      if (getComponentsCount() > 0) {
-        hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
-        hash = (53 * hash) + getComponentsList().hashCode();
-      }
-      if (hasControllerId()) {
-        hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getControllerId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
+                return context.ContextOuterClass.ConfigRule.getDefaultInstance();
+            }
 
-    public static context.ContextOuterClass.Device parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Device parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Device parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Device parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule build() {
+                context.ContextOuterClass.ConfigRule result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Device 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
+            public context.ContextOuterClass.ConfigRule buildPartial() {
+                context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
+            }
+
+            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
+                result.configRuleCase_ = configRuleCase_;
+                result.configRule_ = this.configRule_;
+                if (configRuleCase_ == 2 && customBuilder_ != null) {
+                    result.configRule_ = customBuilder_.build();
+                }
+                if (configRuleCase_ == 3 && aclBuilder_ != null) {
+                    result.configRule_ = aclBuilder_.build();
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Device}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Device)
-        context.ContextOuterClass.DeviceOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Device_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Device.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceEndpointsFieldBuilder();
-          getComponentsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        deviceType_ = "";
-
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-        deviceOperationalStatus_ = 0;
-
-        deviceDrivers_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (deviceEndpointsBuilder_ == null) {
-          deviceEndpoints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          deviceEndpointsBuilder_.clear();
-        }
-        if (componentsBuilder_ == null) {
-          components_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          componentsBuilder_.clear();
-        }
-        if (controllerIdBuilder_ == null) {
-          controllerId_ = null;
-        } else {
-          controllerId_ = null;
-          controllerIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Device_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Device getDefaultInstanceForType() {
-        return context.ContextOuterClass.Device.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Device build() {
-        context.ContextOuterClass.Device result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Device buildPartial() {
-        context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
-        int from_bitField0_ = bitField0_;
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.deviceType_ = deviceType_;
-        if (deviceConfigBuilder_ == null) {
-          result.deviceConfig_ = deviceConfig_;
-        } else {
-          result.deviceConfig_ = deviceConfigBuilder_.build();
-        }
-        result.deviceOperationalStatus_ = deviceOperationalStatus_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.deviceDrivers_ = deviceDrivers_;
-        if (deviceEndpointsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.deviceEndpoints_ = deviceEndpoints_;
-        } else {
-          result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
-        }
-        if (componentsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            components_ = java.util.Collections.unmodifiableList(components_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.components_ = components_;
-        } else {
-          result.components_ = componentsBuilder_.build();
-        }
-        if (controllerIdBuilder_ == null) {
-          result.controllerId_ = controllerId_;
-        } else {
-          result.controllerId_ = controllerIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Device) {
-          return mergeFrom((context.ContextOuterClass.Device)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Device other) {
-        if (other == context.ContextOuterClass.Device.getDefaultInstance()) return this;
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (!other.getDeviceType().isEmpty()) {
-          deviceType_ = other.deviceType_;
-          onChanged();
-        }
-        if (other.hasDeviceConfig()) {
-          mergeDeviceConfig(other.getDeviceConfig());
-        }
-        if (other.deviceOperationalStatus_ != 0) {
-          setDeviceOperationalStatusValue(other.getDeviceOperationalStatusValue());
-        }
-        if (!other.deviceDrivers_.isEmpty()) {
-          if (deviceDrivers_.isEmpty()) {
-            deviceDrivers_ = other.deviceDrivers_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureDeviceDriversIsMutable();
-            deviceDrivers_.addAll(other.deviceDrivers_);
-          }
-          onChanged();
-        }
-        if (deviceEndpointsBuilder_ == null) {
-          if (!other.deviceEndpoints_.isEmpty()) {
-            if (deviceEndpoints_.isEmpty()) {
-              deviceEndpoints_ = other.deviceEndpoints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureDeviceEndpointsIsMutable();
-              deviceEndpoints_.addAll(other.deviceEndpoints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.deviceEndpoints_.isEmpty()) {
-            if (deviceEndpointsBuilder_.isEmpty()) {
-              deviceEndpointsBuilder_.dispose();
-              deviceEndpointsBuilder_ = null;
-              deviceEndpoints_ = other.deviceEndpoints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              deviceEndpointsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDeviceEndpointsFieldBuilder() : null;
-            } else {
-              deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.ConfigRule) {
+                    return mergeFrom((context.ContextOuterClass.ConfigRule) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
             }
-          }
-        }
-        if (componentsBuilder_ == null) {
-          if (!other.components_.isEmpty()) {
-            if (components_.isEmpty()) {
-              components_ = other.components_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureComponentsIsMutable();
-              components_.addAll(other.components_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.components_.isEmpty()) {
-            if (componentsBuilder_.isEmpty()) {
-              componentsBuilder_.dispose();
-              componentsBuilder_ = null;
-              components_ = other.components_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              componentsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getComponentsFieldBuilder() : null;
-            } else {
-              componentsBuilder_.addAllMessages(other.components_);
-            }
-          }
-        }
-        if (other.hasControllerId()) {
-          mergeControllerId(other.getControllerId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Device parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Device) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object deviceType_ = "";
-      /**
-       * <code>string device_type = 3;</code>
-       * @return The deviceType.
-       */
-      public java.lang.String getDeviceType() {
-        java.lang.Object ref = deviceType_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          deviceType_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string device_type = 3;</code>
-       * @return The bytes for deviceType.
-       */
-      public com.google.protobuf.ByteString
-          getDeviceTypeBytes() {
-        java.lang.Object ref = deviceType_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          deviceType_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string device_type = 3;</code>
-       * @param value The deviceType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceType(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        deviceType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceType() {
-        
-        deviceType_ = getDefaultInstance().getDeviceType();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_type = 3;</code>
-       * @param value The bytes for deviceType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        deviceType_ = value;
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.DeviceConfig deviceConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       * @return Whether the deviceConfig field is set.
-       */
-      public boolean hasDeviceConfig() {
-        return deviceConfigBuilder_ != null || deviceConfig_ != null;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       * @return The deviceConfig.
-       */
-      public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-        } else {
-          return deviceConfigBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceConfig_ = value;
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder setDeviceConfig(
-          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (deviceConfig_ != null) {
-            deviceConfig_ =
-              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            deviceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          deviceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public Builder clearDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-          onChanged();
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-        
-        onChanged();
-        return getDeviceConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-        if (deviceConfigBuilder_ != null) {
-          return deviceConfigBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceConfig_ == null ?
-              context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> 
-          getDeviceConfigFieldBuilder() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(
-                  getDeviceConfig(),
-                  getParentForChildren(),
-                  isClean());
-          deviceConfig_ = null;
-        }
-        return deviceConfigBuilder_;
-      }
-
-      private int deviceOperationalStatus_ = 0;
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @return The enum numeric value on the wire for deviceOperationalStatus.
-       */
-      @java.lang.Override public int getDeviceOperationalStatusValue() {
-        return deviceOperationalStatus_;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @param value The enum numeric value on the wire for deviceOperationalStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceOperationalStatusValue(int value) {
-        
-        deviceOperationalStatus_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @return The deviceOperationalStatus.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.valueOf(deviceOperationalStatus_);
-        return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @param value The deviceOperationalStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceOperationalStatus(context.ContextOuterClass.DeviceOperationalStatusEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        deviceOperationalStatus_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceOperationalStatus() {
-        
-        deviceOperationalStatus_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> deviceDrivers_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceDriversIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
-          bitField0_ |= 0x00000001;
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @return A list containing the deviceDrivers.
-       */
-      public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
-        return new com.google.protobuf.Internal.ListAdapter<
-            java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @return The count of deviceDrivers.
-       */
-      public int getDeviceDriversCount() {
-        return deviceDrivers_.size();
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param index The index of the element to return.
-       * @return The deviceDrivers at the given index.
-       */
-      public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
-        return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param index The index to set the value at.
-       * @param value The deviceDrivers to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceDrivers(
-          int index, context.ContextOuterClass.DeviceDriverEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureDeviceDriversIsMutable();
-        deviceDrivers_.set(index, value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param value The deviceDrivers to add.
-       * @return This builder for chaining.
-       */
-      public Builder addDeviceDrivers(context.ContextOuterClass.DeviceDriverEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureDeviceDriversIsMutable();
-        deviceDrivers_.add(value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param values The deviceDrivers to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllDeviceDrivers(
-          java.lang.Iterable<? extends context.ContextOuterClass.DeviceDriverEnum> values) {
-        ensureDeviceDriversIsMutable();
-        for (context.ContextOuterClass.DeviceDriverEnum value : values) {
-          deviceDrivers_.add(value.getNumber());
-        }
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceDrivers() {
-        deviceDrivers_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @return A list containing the enum numeric values on the wire for deviceDrivers.
-       */
-      public java.util.List<java.lang.Integer>
-      getDeviceDriversValueList() {
-        return java.util.Collections.unmodifiableList(deviceDrivers_);
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of deviceDrivers at the given index.
-       */
-      public int getDeviceDriversValue(int index) {
-        return deviceDrivers_.get(index);
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of deviceDrivers at the given index.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceDriversValue(
-          int index, int value) {
-        ensureDeviceDriversIsMutable();
-        deviceDrivers_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param value The enum numeric value on the wire for deviceDrivers to add.
-       * @return This builder for chaining.
-       */
-      public Builder addDeviceDriversValue(int value) {
-        ensureDeviceDriversIsMutable();
-        deviceDrivers_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
-       * @param values The enum numeric values on the wire for deviceDrivers to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllDeviceDriversValue(
-          java.lang.Iterable<java.lang.Integer> values) {
-        ensureDeviceDriversIsMutable();
-        for (int value : values) {
-          deviceDrivers_.add(value);
-        }
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceEndpointsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> deviceEndpointsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
-        if (deviceEndpointsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(deviceEndpoints_);
-        } else {
-          return deviceEndpointsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public int getDeviceEndpointsCount() {
-        if (deviceEndpointsBuilder_ == null) {
-          return deviceEndpoints_.size();
-        } else {
-          return deviceEndpointsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
-        if (deviceEndpointsBuilder_ == null) {
-          return deviceEndpoints_.get(index);
-        } else {
-          return deviceEndpointsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder setDeviceEndpoints(
-          int index, context.ContextOuterClass.EndPoint value) {
-        if (deviceEndpointsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.set(index, value);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder setDeviceEndpoints(
-          int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
-        if (deviceEndpointsBuilder_ == null) {
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint value) {
-        if (deviceEndpointsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.add(value);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder addDeviceEndpoints(
-          int index, context.ContextOuterClass.EndPoint value) {
-        if (deviceEndpointsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.add(index, value);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder addDeviceEndpoints(
-          context.ContextOuterClass.EndPoint.Builder builderForValue) {
-        if (deviceEndpointsBuilder_ == null) {
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.add(builderForValue.build());
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder addDeviceEndpoints(
-          int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
-        if (deviceEndpointsBuilder_ == null) {
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder addAllDeviceEndpoints(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPoint> values) {
-        if (deviceEndpointsBuilder_ == null) {
-          ensureDeviceEndpointsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, deviceEndpoints_);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder clearDeviceEndpoints() {
-        if (deviceEndpointsBuilder_ == null) {
-          deviceEndpoints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public Builder removeDeviceEndpoints(int index) {
-        if (deviceEndpointsBuilder_ == null) {
-          ensureDeviceEndpointsIsMutable();
-          deviceEndpoints_.remove(index);
-          onChanged();
-        } else {
-          deviceEndpointsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public context.ContextOuterClass.EndPoint.Builder getDeviceEndpointsBuilder(
-          int index) {
-        return getDeviceEndpointsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(
-          int index) {
-        if (deviceEndpointsBuilder_ == null) {
-          return deviceEndpoints_.get(index);  } else {
-          return deviceEndpointsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> 
-           getDeviceEndpointsOrBuilderList() {
-        if (deviceEndpointsBuilder_ != null) {
-          return deviceEndpointsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(deviceEndpoints_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder() {
-        return getDeviceEndpointsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPoint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder(
-          int index) {
-        return getDeviceEndpointsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPoint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPoint device_endpoints = 7;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPoint.Builder> 
-           getDeviceEndpointsBuilderList() {
-        return getDeviceEndpointsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> 
-          getDeviceEndpointsFieldBuilder() {
-        if (deviceEndpointsBuilder_ == null) {
-          deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(
-                  deviceEndpoints_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceEndpoints_ = null;
-        }
-        return deviceEndpointsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.Component> components_ =
-        java.util.Collections.emptyList();
-      private void ensureComponentsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentsBuilder_;
-
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
-        if (componentsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(components_);
-        } else {
-          return componentsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public int getComponentsCount() {
-        if (componentsBuilder_ == null) {
-          return components_.size();
-        } else {
-          return componentsBuilder_.getCount();
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public context.ContextOuterClass.Component getComponents(int index) {
-        if (componentsBuilder_ == null) {
-          return components_.get(index);
-        } else {
-          return componentsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder setComponents(
-          int index, context.ContextOuterClass.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.set(index, value);
-          onChanged();
-        } else {
-          componentsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder setComponents(
-          int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder addComponents(context.ContextOuterClass.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.add(value);
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder addComponents(
-          int index, context.ContextOuterClass.Component value) {
-        if (componentsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureComponentsIsMutable();
-          components_.add(index, value);
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder addComponents(
-          context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.add(builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder addComponents(
-          int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          componentsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder addAllComponents(
-          java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, components_);
-          onChanged();
-        } else {
-          componentsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder clearComponents() {
-        if (componentsBuilder_ == null) {
-          components_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          componentsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public Builder removeComponents(int index) {
-        if (componentsBuilder_ == null) {
-          ensureComponentsIsMutable();
-          components_.remove(index);
-          onChanged();
-        } else {
-          componentsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder getComponentsBuilder(
-          int index) {
-        return getComponentsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
-          int index) {
-        if (componentsBuilder_ == null) {
-          return components_.get(index);  } else {
-          return componentsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-           getComponentsOrBuilderList() {
-        if (componentsBuilder_ != null) {
-          return componentsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(components_);
-        }
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder addComponentsBuilder() {
-        return getComponentsFieldBuilder().addBuilder(
-            context.ContextOuterClass.Component.getDefaultInstance());
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public context.ContextOuterClass.Component.Builder addComponentsBuilder(
-          int index) {
-        return getComponentsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Component.getDefaultInstance());
-      }
-      /**
-       * <pre>
-       * Used for inventory
-       * </pre>
-       *
-       * <code>repeated .context.Component components = 8;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Component.Builder> 
-           getComponentsBuilderList() {
-        return getComponentsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> 
-          getComponentsFieldBuilder() {
-        if (componentsBuilder_ == null) {
-          componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(
-                  components_,
-                  ((bitField0_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          components_ = null;
-        }
-        return componentsBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceId controllerId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> controllerIdBuilder_;
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       * @return Whether the controllerId field is set.
-       */
-      public boolean hasControllerId() {
-        return controllerIdBuilder_ != null || controllerId_ != null;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       * @return The controllerId.
-       */
-      public context.ContextOuterClass.DeviceId getControllerId() {
-        if (controllerIdBuilder_ == null) {
-          return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
-        } else {
-          return controllerIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public Builder setControllerId(context.ContextOuterClass.DeviceId value) {
-        if (controllerIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          controllerId_ = value;
-          onChanged();
-        } else {
-          controllerIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public Builder setControllerId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (controllerIdBuilder_ == null) {
-          controllerId_ = builderForValue.build();
-          onChanged();
-        } else {
-          controllerIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) {
-        if (controllerIdBuilder_ == null) {
-          if (controllerId_ != null) {
-            controllerId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(controllerId_).mergeFrom(value).buildPartial();
-          } else {
-            controllerId_ = value;
-          }
-          onChanged();
-        } else {
-          controllerIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public Builder clearControllerId() {
-        if (controllerIdBuilder_ == null) {
-          controllerId_ = null;
-          onChanged();
-        } else {
-          controllerId_ = null;
-          controllerIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
-        
-        onChanged();
-        return getControllerIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
-        if (controllerIdBuilder_ != null) {
-          return controllerIdBuilder_.getMessageOrBuilder();
-        } else {
-          return controllerId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
-        }
-      }
-      /**
-       * <pre>
-       * Identifier of node controlling the actual device
-       * </pre>
-       *
-       * <code>.context.DeviceId controller_id = 9;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getControllerIdFieldBuilder() {
-        if (controllerIdBuilder_ == null) {
-          controllerIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getControllerId(),
-                  getParentForChildren(),
-                  isClean());
-          controllerId_ = null;
-        }
-        return controllerIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Device)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.Device)
-    private static final context.ContextOuterClass.Device DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Device();
-    }
+            public Builder mergeFrom(context.ContextOuterClass.ConfigRule other) {
+                if (other == context.ContextOuterClass.ConfigRule.getDefaultInstance())
+                    return this;
+                if (other.action_ != 0) {
+                    setActionValue(other.getActionValue());
+                }
+                switch(other.getConfigRuleCase()) {
+                    case CUSTOM:
+                        {
+                            mergeCustom(other.getCustom());
+                            break;
+                        }
+                    case ACL:
+                        {
+                            mergeAcl(other.getAcl());
+                            break;
+                        }
+                    case CONFIGRULE_NOT_SET:
+                        {
+                            break;
+                        }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    public static context.ContextOuterClass.Device getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    private static final com.google.protobuf.Parser<Device>
-        PARSER = new com.google.protobuf.AbstractParser<Device>() {
-      @java.lang.Override
-      public Device parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Device(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Device> parser() {
-      return PARSER;
-    }
+            @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:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
+                                    configRuleCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Device> getParserForType() {
-      return PARSER;
-    }
+            private int configRuleCase_ = 0;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Device getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private java.lang.Object configRule_;
 
-  }
+            public ConfigRuleCase getConfigRuleCase() {
+                return ConfigRuleCase.forNumber(configRuleCase_);
+            }
 
-  public interface ComponentOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Component)
-      com.google.protobuf.MessageOrBuilder {
+            public Builder clearConfigRule() {
+                configRuleCase_ = 0;
+                configRule_ = null;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     * @return Whether the componentUuid field is set.
-     */
-    boolean hasComponentUuid();
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     * @return The componentUuid.
-     */
-    context.ContextOuterClass.Uuid getComponentUuid();
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder();
+            private int bitField0_;
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            private int action_ = 0;
 
-    /**
-     * <code>string type = 3;</code>
-     * @return The type.
-     */
-    java.lang.String getType();
-    /**
-     * <code>string type = 3;</code>
-     * @return The bytes for type.
-     */
-    com.google.protobuf.ByteString
-        getTypeBytes();
+            /**
+             * <code>.context.ConfigActionEnum action = 1;</code>
+             * @return The enum numeric value on the wire for action.
+             */
+            @java.lang.Override
+            public int getActionValue() {
+                return action_;
+            }
 
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    int getAttributesCount();
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    boolean containsAttributes(
-        java.lang.String key);
-    /**
-     * Use {@link #getAttributesMap()} instead.
-     */
-    @java.lang.Deprecated
-    java.util.Map<java.lang.String, java.lang.String>
-    getAttributes();
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    java.util.Map<java.lang.String, java.lang.String>
-    getAttributesMap();
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
+            /**
+             * <code>.context.ConfigActionEnum action = 1;</code>
+             * @param value The enum numeric value on the wire for action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setActionValue(int value) {
+                action_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    java.lang.String getAttributesOrDefault(
-        java.lang.String key,
-        java.lang.String defaultValue);
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
+            /**
+             * <code>.context.ConfigActionEnum action = 1;</code>
+             * @return The action.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigActionEnum getAction() {
+                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
+                return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
+            }
 
-    java.lang.String getAttributesOrThrow(
-        java.lang.String key);
+            /**
+             * <code>.context.ConfigActionEnum action = 1;</code>
+             * @param value The action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAction(context.ContextOuterClass.ConfigActionEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                action_ = value.getNumber();
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>string parent = 5;</code>
-     * @return The parent.
-     */
-    java.lang.String getParent();
-    /**
-     * <code>string parent = 5;</code>
-     * @return The bytes for parent.
-     */
-    com.google.protobuf.ByteString
-        getParentBytes();
-  }
-  /**
-   * <pre>
-   *Defined previously to this section - Tested OK
-   * </pre>
-   *
-   * Protobuf type {@code context.Component}
-   */
-  public static final class Component extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Component)
-      ComponentOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Component.newBuilder() to construct.
-    private Component(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Component() {
-      name_ = "";
-      type_ = "";
-      parent_ = "";
-    }
+            /**
+             * <code>.context.ConfigActionEnum action = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                action_ = 0;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Component();
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> customBuilder_;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Component(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (componentUuid_ != null) {
-                subBuilder = componentUuid_.toBuilder();
-              }
-              componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(componentUuid_);
-                componentUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              type_ = s;
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                attributes_ = com.google.protobuf.MapField.newMapField(
-                    AttributesDefaultEntryHolder.defaultEntry);
-                mutable_bitField0_ |= 0x00000001;
-              }
-              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
-              attributes__ = input.readMessage(
-                  AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
-              attributes_.getMutableMap().put(
-                  attributes__.getKey(), attributes__.getValue());
-              break;
-            }
-            case 42: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              parent_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Component_descriptor;
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             * @return Whether the custom field is set.
+             */
+            @java.lang.Override
+            public boolean hasCustom() {
+                return configRuleCase_ == 2;
+            }
 
-    @SuppressWarnings({"rawtypes"})
-    @java.lang.Override
-    protected com.google.protobuf.MapField internalGetMapField(
-        int number) {
-      switch (number) {
-        case 4:
-          return internalGetAttributes();
-        default:
-          throw new RuntimeException(
-              "Invalid map field number: " + number);
-      }
-    }
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             * @return The custom.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_Custom getCustom() {
+                if (customBuilder_ == null) {
+                    if (configRuleCase_ == 2) {
+                        return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
+                    }
+                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+                } else {
+                    if (configRuleCase_ == 2) {
+                        return customBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+                }
+            }
 
-    public static final int COMPONENT_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid componentUuid_;
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     * @return Whether the componentUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasComponentUuid() {
-      return componentUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     * @return The componentUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getComponentUuid() {
-      return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
-    }
-    /**
-     * <code>.context.Uuid component_uuid = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-      return getComponentUuid();
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom value) {
+                if (customBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    configRule_ = value;
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(value);
+                }
+                configRuleCase_ = 2;
+                return this;
+            }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) {
+                if (customBuilder_ == null) {
+                    configRule_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(builderForValue.build());
+                }
+                configRuleCase_ = 2;
+                return this;
+            }
 
-    public static final int TYPE_FIELD_NUMBER = 3;
-    private volatile java.lang.Object type_;
-    /**
-     * <code>string type = 3;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string type = 3;</code>
-     * @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;
-      }
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            public Builder mergeCustom(context.ContextOuterClass.ConfigRule_Custom value) {
+                if (customBuilder_ == null) {
+                    if (configRuleCase_ == 2 && configRule_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) {
+                        configRule_ = context.ContextOuterClass.ConfigRule_Custom.newBuilder((context.ContextOuterClass.ConfigRule_Custom) configRule_).mergeFrom(value).buildPartial();
+                    } else {
+                        configRule_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (configRuleCase_ == 2) {
+                        customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
+                    }
+                }
+                configRuleCase_ = 2;
+                return this;
+            }
 
-    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
-    private static final class AttributesDefaultEntryHolder {
-      static final com.google.protobuf.MapEntry<
-          java.lang.String, java.lang.String> defaultEntry =
-              com.google.protobuf.MapEntry
-              .<java.lang.String, java.lang.String>newDefaultInstance(
-                  context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, 
-                  com.google.protobuf.WireFormat.FieldType.STRING,
-                  "",
-                  com.google.protobuf.WireFormat.FieldType.STRING,
-                  "");
-    }
-    private com.google.protobuf.MapField<
-        java.lang.String, java.lang.String> attributes_;
-    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
-    internalGetAttributes() {
-      if (attributes_ == null) {
-        return com.google.protobuf.MapField.emptyMapField(
-            AttributesDefaultEntryHolder.defaultEntry);
-      }
-      return attributes_;
-    }
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            public Builder clearCustom() {
+                if (customBuilder_ == null) {
+                    if (configRuleCase_ == 2) {
+                        configRuleCase_ = 0;
+                        configRule_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (configRuleCase_ == 2) {
+                        configRuleCase_ = 0;
+                        configRule_ = null;
+                    }
+                    customBuilder_.clear();
+                }
+                return this;
+            }
 
-    public int getAttributesCount() {
-      return internalGetAttributes().getMap().size();
-    }
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            public context.ContextOuterClass.ConfigRule_Custom.Builder getCustomBuilder() {
+                return getCustomFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public boolean containsAttributes(
-        java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
-      return internalGetAttributes().getMap().containsKey(key);
-    }
-    /**
-     * Use {@link #getAttributesMap()} instead.
-     */
-    @java.lang.Override
-    @java.lang.Deprecated
-    public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
-      return getAttributesMap();
-    }
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    @java.lang.Override
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
+                if ((configRuleCase_ == 2) && (customBuilder_ != null)) {
+                    return customBuilder_.getMessageOrBuilder();
+                } else {
+                    if (configRuleCase_ == 2) {
+                        return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
+                    }
+                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+                }
+            }
 
-    public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
-      return internalGetAttributes().getMap();
-    }
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    @java.lang.Override
+            /**
+             * <code>.context.ConfigRule_Custom custom = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> getCustomFieldBuilder() {
+                if (customBuilder_ == null) {
+                    if (!(configRuleCase_ == 2)) {
+                        configRule_ = context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
+                    }
+                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder>((context.ContextOuterClass.ConfigRule_Custom) configRule_, getParentForChildren(), isClean());
+                    configRule_ = null;
+                }
+                configRuleCase_ = 2;
+                onChanged();
+                return customBuilder_;
+            }
 
-    public java.lang.String getAttributesOrDefault(
-        java.lang.String key,
-        java.lang.String defaultValue) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
-      java.util.Map<java.lang.String, java.lang.String> map =
-          internalGetAttributes().getMap();
-      return map.containsKey(key) ? map.get(key) : defaultValue;
-    }
-    /**
-     * <pre>
-     * dict[attr.name =&gt; json.dumps(attr.value)]
-     * </pre>
-     *
-     * <code>map&lt;string, string&gt; attributes = 4;</code>
-     */
-    @java.lang.Override
-
-    public java.lang.String getAttributesOrThrow(
-        java.lang.String key) {
-      if (key == null) { throw new java.lang.NullPointerException(); }
-      java.util.Map<java.lang.String, java.lang.String> map =
-          internalGetAttributes().getMap();
-      if (!map.containsKey(key)) {
-        throw new java.lang.IllegalArgumentException();
-      }
-      return map.get(key);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> aclBuilder_;
 
-    public static final int PARENT_FIELD_NUMBER = 5;
-    private volatile java.lang.Object parent_;
-    /**
-     * <code>string parent = 5;</code>
-     * @return The parent.
-     */
-    @java.lang.Override
-    public java.lang.String getParent() {
-      java.lang.Object ref = parent_;
-      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();
-        parent_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string parent = 5;</code>
-     * @return The bytes for parent.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getParentBytes() {
-      java.lang.Object ref = parent_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        parent_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             * @return Whether the acl field is set.
+             */
+            @java.lang.Override
+            public boolean hasAcl() {
+                return configRuleCase_ == 3;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             * @return The acl.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_ACL getAcl() {
+                if (aclBuilder_ == null) {
+                    if (configRuleCase_ == 3) {
+                        return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
+                    }
+                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+                } else {
+                    if (configRuleCase_ == 3) {
+                        return aclBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL value) {
+                if (aclBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    configRule_ = value;
+                    onChanged();
+                } else {
+                    aclBuilder_.setMessage(value);
+                }
+                configRuleCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (componentUuid_ != null) {
-        output.writeMessage(1, getComponentUuid());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (!getTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
-      }
-      com.google.protobuf.GeneratedMessageV3
-        .serializeStringMapTo(
-          output,
-          internalGetAttributes(),
-          AttributesDefaultEntryHolder.defaultEntry,
-          4);
-      if (!getParentBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL.Builder builderForValue) {
+                if (aclBuilder_ == null) {
+                    configRule_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    aclBuilder_.setMessage(builderForValue.build());
+                }
+                configRuleCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (componentUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getComponentUuid());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (!getTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
-      }
-      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
-           : internalGetAttributes().getMap().entrySet()) {
-        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
-        attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType()
-            .setKey(entry.getKey())
-            .setValue(entry.getValue())
-            .build();
-        size += com.google.protobuf.CodedOutputStream
-            .computeMessageSize(4, attributes__);
-      }
-      if (!getParentBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            public Builder mergeAcl(context.ContextOuterClass.ConfigRule_ACL value) {
+                if (aclBuilder_ == null) {
+                    if (configRuleCase_ == 3 && configRule_ != context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) {
+                        configRule_ = context.ContextOuterClass.ConfigRule_ACL.newBuilder((context.ContextOuterClass.ConfigRule_ACL) configRule_).mergeFrom(value).buildPartial();
+                    } else {
+                        configRule_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (configRuleCase_ == 3) {
+                        aclBuilder_.mergeFrom(value);
+                    } else {
+                        aclBuilder_.setMessage(value);
+                    }
+                }
+                configRuleCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Component)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Component other = (context.ContextOuterClass.Component) obj;
-
-      if (hasComponentUuid() != other.hasComponentUuid()) return false;
-      if (hasComponentUuid()) {
-        if (!getComponentUuid()
-            .equals(other.getComponentUuid())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getType()
-          .equals(other.getType())) return false;
-      if (!internalGetAttributes().equals(
-          other.internalGetAttributes())) return false;
-      if (!getParent()
-          .equals(other.getParent())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            public Builder clearAcl() {
+                if (aclBuilder_ == null) {
+                    if (configRuleCase_ == 3) {
+                        configRuleCase_ = 0;
+                        configRule_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (configRuleCase_ == 3) {
+                        configRuleCase_ = 0;
+                        configRule_ = null;
+                    }
+                    aclBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasComponentUuid()) {
-        hash = (37 * hash) + COMPONENT_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getComponentUuid().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      hash = (37 * hash) + TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getType().hashCode();
-      if (!internalGetAttributes().getMap().isEmpty()) {
-        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
-        hash = (53 * hash) + internalGetAttributes().hashCode();
-      }
-      hash = (37 * hash) + PARENT_FIELD_NUMBER;
-      hash = (53 * hash) + getParent().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            public context.ContextOuterClass.ConfigRule_ACL.Builder getAclBuilder() {
+                return getAclFieldBuilder().getBuilder();
+            }
 
-    public static context.ContextOuterClass.Component parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Component parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Component parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Component parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
+                if ((configRuleCase_ == 3) && (aclBuilder_ != null)) {
+                    return aclBuilder_.getMessageOrBuilder();
+                } else {
+                    if (configRuleCase_ == 3) {
+                        return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
+                    }
+                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Component prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.ConfigRule_ACL acl = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> getAclFieldBuilder() {
+                if (aclBuilder_ == null) {
+                    if (!(configRuleCase_ == 3)) {
+                        configRule_ = context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
+                    }
+                    aclBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder>((context.ContextOuterClass.ConfigRule_ACL) configRule_, getParentForChildren(), isClean());
+                    configRule_ = null;
+                }
+                configRuleCase_ = 3;
+                onChanged();
+                return aclBuilder_;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     *Defined previously to this section - Tested OK
-     * </pre>
-     *
-     * Protobuf type {@code context.Component}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Component)
-        context.ContextOuterClass.ComponentOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Component_descriptor;
-      }
-
-      @SuppressWarnings({"rawtypes"})
-      protected com.google.protobuf.MapField internalGetMapField(
-          int number) {
-        switch (number) {
-          case 4:
-            return internalGetAttributes();
-          default:
-            throw new RuntimeException(
-                "Invalid map field number: " + number);
-        }
-      }
-      @SuppressWarnings({"rawtypes"})
-      protected com.google.protobuf.MapField internalGetMutableMapField(
-          int number) {
-        switch (number) {
-          case 4:
-            return internalGetMutableAttributes();
-          default:
-            throw new RuntimeException(
-                "Invalid map field number: " + number);
-        }
-      }
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Component.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (componentUuidBuilder_ == null) {
-          componentUuid_ = null;
-        } else {
-          componentUuid_ = null;
-          componentUuidBuilder_ = null;
-        }
-        name_ = "";
-
-        type_ = "";
-
-        internalGetMutableAttributes().clear();
-        parent_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Component_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Component getDefaultInstanceForType() {
-        return context.ContextOuterClass.Component.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Component build() {
-        context.ContextOuterClass.Component result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Component buildPartial() {
-        context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
-        int from_bitField0_ = bitField0_;
-        if (componentUuidBuilder_ == null) {
-          result.componentUuid_ = componentUuid_;
-        } else {
-          result.componentUuid_ = componentUuidBuilder_.build();
-        }
-        result.name_ = name_;
-        result.type_ = type_;
-        result.attributes_ = internalGetAttributes();
-        result.attributes_.makeImmutable();
-        result.parent_ = parent_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Component) {
-          return mergeFrom((context.ContextOuterClass.Component)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Component other) {
-        if (other == context.ContextOuterClass.Component.getDefaultInstance()) return this;
-        if (other.hasComponentUuid()) {
-          mergeComponentUuid(other.getComponentUuid());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (!other.getType().isEmpty()) {
-          type_ = other.type_;
-          onChanged();
-        }
-        internalGetMutableAttributes().mergeFrom(
-            other.internalGetAttributes());
-        if (!other.getParent().isEmpty()) {
-          parent_ = other.parent_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Component parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Component) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.Uuid componentUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> componentUuidBuilder_;
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       * @return Whether the componentUuid field is set.
-       */
-      public boolean hasComponentUuid() {
-        return componentUuidBuilder_ != null || componentUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       * @return The componentUuid.
-       */
-      public context.ContextOuterClass.Uuid getComponentUuid() {
-        if (componentUuidBuilder_ == null) {
-          return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
-        } else {
-          return componentUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public Builder setComponentUuid(context.ContextOuterClass.Uuid value) {
-        if (componentUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          componentUuid_ = value;
-          onChanged();
-        } else {
-          componentUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public Builder setComponentUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (componentUuidBuilder_ == null) {
-          componentUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          componentUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
-        if (componentUuidBuilder_ == null) {
-          if (componentUuid_ != null) {
-            componentUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
-          } else {
-            componentUuid_ = value;
-          }
-          onChanged();
-        } else {
-          componentUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public Builder clearComponentUuid() {
-        if (componentUuidBuilder_ == null) {
-          componentUuid_ = null;
-          onChanged();
-        } else {
-          componentUuid_ = null;
-          componentUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
-        
-        onChanged();
-        return getComponentUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
-        if (componentUuidBuilder_ != null) {
-          return componentUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return componentUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid component_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getComponentUuidFieldBuilder() {
-        if (componentUuidBuilder_ == null) {
-          componentUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getComponentUuid(),
-                  getParentForChildren(),
-                  isClean());
-          componentUuid_ = null;
-        }
-        return componentUuidBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object type_ = "";
-      /**
-       * <code>string type = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string type = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string type = 3;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearType() {
-        
-        type_ = getDefaultInstance().getType();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string type = 3;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.MapField<
-          java.lang.String, java.lang.String> attributes_;
-      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
-      internalGetAttributes() {
-        if (attributes_ == null) {
-          return com.google.protobuf.MapField.emptyMapField(
-              AttributesDefaultEntryHolder.defaultEntry);
-        }
-        return attributes_;
-      }
-      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
-      internalGetMutableAttributes() {
-        onChanged();;
-        if (attributes_ == null) {
-          attributes_ = com.google.protobuf.MapField.newMapField(
-              AttributesDefaultEntryHolder.defaultEntry);
-        }
-        if (!attributes_.isMutable()) {
-          attributes_ = attributes_.copy();
-        }
-        return attributes_;
-      }
-
-      public int getAttributesCount() {
-        return internalGetAttributes().getMap().size();
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-
-      @java.lang.Override
-      public boolean containsAttributes(
-          java.lang.String key) {
-        if (key == null) { throw new java.lang.NullPointerException(); }
-        return internalGetAttributes().getMap().containsKey(key);
-      }
-      /**
-       * Use {@link #getAttributesMap()} instead.
-       */
-      @java.lang.Override
-      @java.lang.Deprecated
-      public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
-        return getAttributesMap();
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-      @java.lang.Override
-
-      public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
-        return internalGetAttributes().getMap();
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-      @java.lang.Override
-
-      public java.lang.String getAttributesOrDefault(
-          java.lang.String key,
-          java.lang.String defaultValue) {
-        if (key == null) { throw new java.lang.NullPointerException(); }
-        java.util.Map<java.lang.String, java.lang.String> map =
-            internalGetAttributes().getMap();
-        return map.containsKey(key) ? map.get(key) : defaultValue;
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-      @java.lang.Override
-
-      public java.lang.String getAttributesOrThrow(
-          java.lang.String key) {
-        if (key == null) { throw new java.lang.NullPointerException(); }
-        java.util.Map<java.lang.String, java.lang.String> map =
-            internalGetAttributes().getMap();
-        if (!map.containsKey(key)) {
-          throw new java.lang.IllegalArgumentException();
-        }
-        return map.get(key);
-      }
-
-      public Builder clearAttributes() {
-        internalGetMutableAttributes().getMutableMap()
-            .clear();
-        return this;
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-
-      public Builder removeAttributes(
-          java.lang.String key) {
-        if (key == null) { throw new java.lang.NullPointerException(); }
-        internalGetMutableAttributes().getMutableMap()
-            .remove(key);
-        return this;
-      }
-      /**
-       * Use alternate mutation accessors instead.
-       */
-      @java.lang.Deprecated
-      public java.util.Map<java.lang.String, java.lang.String>
-      getMutableAttributes() {
-        return internalGetMutableAttributes().getMutableMap();
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-      public Builder putAttributes(
-          java.lang.String key,
-          java.lang.String value) {
-        if (key == null) { throw new java.lang.NullPointerException(); }
-        if (value == null) { throw new java.lang.NullPointerException(); }
-        internalGetMutableAttributes().getMutableMap()
-            .put(key, value);
-        return this;
-      }
-      /**
-       * <pre>
-       * dict[attr.name =&gt; json.dumps(attr.value)]
-       * </pre>
-       *
-       * <code>map&lt;string, string&gt; attributes = 4;</code>
-       */
-
-      public Builder putAllAttributes(
-          java.util.Map<java.lang.String, java.lang.String> values) {
-        internalGetMutableAttributes().getMutableMap()
-            .putAll(values);
-        return this;
-      }
-
-      private java.lang.Object parent_ = "";
-      /**
-       * <code>string parent = 5;</code>
-       * @return The parent.
-       */
-      public java.lang.String getParent() {
-        java.lang.Object ref = parent_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          parent_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string parent = 5;</code>
-       * @return The bytes for parent.
-       */
-      public com.google.protobuf.ByteString
-          getParentBytes() {
-        java.lang.Object ref = parent_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          parent_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string parent = 5;</code>
-       * @param value The parent to set.
-       * @return This builder for chaining.
-       */
-      public Builder setParent(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        parent_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string parent = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearParent() {
-        
-        parent_ = getDefaultInstance().getParent();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string parent = 5;</code>
-       * @param value The bytes for parent to set.
-       * @return This builder for chaining.
-       */
-      public Builder setParentBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        parent_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Component)
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    // @@protoc_insertion_point(class_scope:context.Component)
-    private static final context.ContextOuterClass.Component DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Component();
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.ConfigRule)
+        }
 
-    public static context.ContextOuterClass.Component getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        // @@protoc_insertion_point(class_scope:context.ConfigRule)
+        private static final context.ContextOuterClass.ConfigRule DEFAULT_INSTANCE;
 
-    private static final com.google.protobuf.Parser<Component>
-        PARSER = new com.google.protobuf.AbstractParser<Component>() {
-      @java.lang.Override
-      public Component parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Component(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Component> parser() {
-      return PARSER;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule();
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Component> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.ConfigRule getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Component getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        private static final com.google.protobuf.Parser<ConfigRule> PARSER = new com.google.protobuf.AbstractParser<ConfigRule>() {
 
-  }
+            @java.lang.Override
+            public ConfigRule 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 interface DeviceConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceConfig)
-      com.google.protobuf.MessageOrBuilder {
+        public static com.google.protobuf.Parser<ConfigRule> parser() {
+            return PARSER;
+        }
 
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ConfigRule> 
-        getConfigRulesList();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    context.ContextOuterClass.ConfigRule getConfigRules(int index);
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    int getConfigRulesCount();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.DeviceConfig}
-   */
-  public static final class DeviceConfig extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceConfig)
-      DeviceConfigOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceConfig.newBuilder() to construct.
-    private DeviceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceConfig() {
-      configRules_ = java.util.Collections.emptyList();
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<ConfigRule> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceConfig();
+        @java.lang.Override
+        public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceConfig(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
-    }
+    public interface Constraint_CustomOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Custom)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
-    }
+        /**
+         * <code>string constraint_type = 1;</code>
+         * @return The constraintType.
+         */
+        java.lang.String getConstraintType();
 
-    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public int getConfigRulesCount() {
-      return configRules_.size();
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-      return configRules_.get(index);
+        /**
+         * <code>string constraint_type = 1;</code>
+         * @return The bytes for constraintType.
+         */
+        com.google.protobuf.ByteString getConstraintTypeBytes();
+
+        /**
+         * <code>string constraint_value = 2;</code>
+         * @return The constraintValue.
+         */
+        java.lang.String getConstraintValue();
+
+        /**
+         * <code>string constraint_value = 2;</code>
+         * @return The bytes for constraintValue.
+         */
+        com.google.protobuf.ByteString getConstraintValueBytes();
     }
+
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * Protobuf type {@code context.Constraint_Custom}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index) {
-      return configRules_.get(index);
-    }
+    public static final class Constraint_Custom extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Custom)
+    Constraint_CustomOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Constraint_Custom.newBuilder() to construct.
+        private Constraint_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private Constraint_Custom() {
+            constraintType_ = "";
+            constraintValue_ = "";
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_Custom();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < configRules_.size(); i++) {
-        output.writeMessage(1, configRules_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < configRules_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, configRules_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceConfig)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
-
-      if (!getConfigRulesList()
-          .equals(other.getConfigRulesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConfigRulesCount() > 0) {
-        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
-        hash = (53 * hash) + getConfigRulesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintType_ = "";
 
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>string constraint_type = 1;</code>
+         * @return The constraintType.
+         */
+        @java.lang.Override
+        public java.lang.String getConstraintType() {
+            java.lang.Object ref = constraintType_;
+            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();
+                constraintType_ = s;
+                return s;
+            }
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceConfig prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>string constraint_type = 1;</code>
+         * @return The bytes for constraintType.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getConstraintTypeBytes() {
+            java.lang.Object ref = constraintType_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                constraintType_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.DeviceConfig}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceConfig)
-        context.ContextOuterClass.DeviceConfigOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceConfig.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceConfig build() {
-        context.ContextOuterClass.DeviceConfig result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceConfig buildPartial() {
-        context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
-        int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.configRules_ = configRules_;
-        } else {
-          result.configRules_ = configRulesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceConfig) {
-          return mergeFrom((context.ContextOuterClass.DeviceConfig)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceConfig other) {
-        if (other == context.ContextOuterClass.DeviceConfig.getDefaultInstance()) return this;
-        if (configRulesBuilder_ == null) {
-          if (!other.configRules_.isEmpty()) {
-            if (configRules_.isEmpty()) {
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+        public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object constraintValue_ = "";
+
+        /**
+         * <code>string constraint_value = 2;</code>
+         * @return The constraintValue.
+         */
+        @java.lang.Override
+        public java.lang.String getConstraintValue() {
+            java.lang.Object ref = constraintValue_;
+            if (ref instanceof java.lang.String) {
+                return (java.lang.String) ref;
             } else {
-              ensureConfigRulesIsMutable();
-              configRules_.addAll(other.configRules_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.configRules_.isEmpty()) {
-            if (configRulesBuilder_.isEmpty()) {
-              configRulesBuilder_.dispose();
-              configRulesBuilder_ = null;
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              configRulesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConfigRulesFieldBuilder() : null;
+                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                java.lang.String s = bs.toStringUtf8();
+                constraintValue_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string constraint_value = 2;</code>
+         * @return The bytes for constraintValue.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getConstraintValueBytes() {
+            java.lang.Object ref = constraintValue_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                constraintValue_ = b;
+                return b;
             } else {
-              configRulesBuilder_.addAllMessages(other.configRules_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
-        java.util.Collections.emptyList();
-      private void ensureConfigRulesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
-
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-        if (configRulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(configRules_);
-        } else {
-          return configRulesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public int getConfigRulesCount() {
-        if (configRulesBuilder_ == null) {
-          return configRules_.size();
-        } else {
-          return configRulesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);
-        } else {
-          return configRulesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addAllConfigRules(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, configRules_);
-          onChanged();
-        } else {
-          configRulesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder clearConfigRules() {
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder removeConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.remove(index);
-          onChanged();
-        } else {
-          configRulesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-          int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);  } else {
-          return configRulesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-           getConfigRulesOrBuilderList() {
-        if (configRulesBuilder_ != null) {
-          return configRulesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(configRules_);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
-        return getConfigRulesFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
-           getConfigRulesBuilderList() {
-        return getConfigRulesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
-          getConfigRulesFieldBuilder() {
-        if (configRulesBuilder_ == null) {
-          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
-                  configRules_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          configRules_ = null;
-        }
-        return configRulesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceConfig)
-    }
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    // @@protoc_insertion_point(class_scope:context.DeviceConfig)
-    private static final context.ContextOuterClass.DeviceConfig DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceConfig();
-    }
+        private byte memoizedIsInitialized = -1;
 
-    public static context.ContextOuterClass.DeviceConfig getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    private static final com.google.protobuf.Parser<DeviceConfig>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceConfig>() {
-      @java.lang.Override
-      public DeviceConfig parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceConfig(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceConfig> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceConfig> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_Custom)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_Custom other = (context.ContextOuterClass.Constraint_Custom) obj;
+            if (!getConstraintType().equals(other.getConstraintType()))
+                return false;
+            if (!getConstraintValue().equals(other.getConstraintValue()))
+                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) + CONSTRAINT_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + getConstraintType().hashCode();
+            hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
+            hash = (53 * hash) + getConstraintValue().hashCode();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  public interface DeviceIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceIdList)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.DeviceId> 
-        getDeviceIdsList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    context.ContextOuterClass.DeviceId getDeviceIds(int index);
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    int getDeviceIdsCount();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.DeviceIdList}
-   */
-  public static final class DeviceIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceIdList)
-      DeviceIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceIdList.newBuilder() to construct.
-    private DeviceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceIdList() {
-      deviceIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceIdList();
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int DEVICE_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getDeviceIdsCount() {
-      return deviceIds_.size();
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-      return deviceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index) {
-      return deviceIds_.get(index);
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        output.writeMessage(1, deviceIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, deviceIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
-
-      if (!getDeviceIdsList()
-          .equals(other.getDeviceIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getDeviceIdsCount() > 0) {
-        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_Custom prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.DeviceIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceIdList)
-        context.ContextOuterClass.DeviceIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceIdList build() {
-        context.ContextOuterClass.DeviceIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceIdList buildPartial() {
-        context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (deviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceIdList) {
-          return mergeFrom((context.ContextOuterClass.DeviceIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceIdList other) {
-        if (other == context.ContextOuterClass.DeviceIdList.getDefaultInstance()) return this;
-        if (deviceIdsBuilder_ == null) {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIds_.isEmpty()) {
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDeviceIdsIsMutable();
-              deviceIds_.addAll(other.deviceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIdsBuilder_.isEmpty()) {
-              deviceIdsBuilder_.dispose();
-              deviceIdsBuilder_ = null;
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              deviceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDeviceIdsFieldBuilder() : null;
-            } else {
-              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-        if (deviceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        } else {
-          return deviceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public int getDeviceIdsCount() {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.size();
-        } else {
-          return deviceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);
-        } else {
-          return deviceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder addDeviceIds(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder addAllDeviceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, deviceIds_);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder clearDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public Builder removeDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.remove(index);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-          int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);  } else {
-          return deviceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-           getDeviceIdsOrBuilderList() {
-        if (deviceIdsBuilder_ != null) {
-          return deviceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
-           getDeviceIdsBuilderList() {
-        return getDeviceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdsFieldBuilder() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  deviceIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceIds_ = null;
-        }
-        return deviceIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceIdList)
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.DeviceIdList)
-    private static final context.ContextOuterClass.DeviceIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceIdList();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static context.ContextOuterClass.DeviceIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_Custom}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Custom)
+        context.ContextOuterClass.Constraint_CustomOrBuilder {
 
-    private static final com.google.protobuf.Parser<DeviceIdList>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceIdList>() {
-      @java.lang.Override
-      public DeviceIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceIdList> parser() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceIdList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
+            private Builder() {
+            }
 
-  }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-  public interface DeviceListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceList)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                constraintType_ = "";
+                constraintValue_ = "";
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Device> 
-        getDevicesList();
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    context.ContextOuterClass.Device getDevices(int index);
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    int getDevicesCount();
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-        getDevicesOrBuilderList();
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.DeviceList}
-   */
-  public static final class DeviceList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceList)
-      DeviceListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceList.newBuilder() to construct.
-    private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceList() {
-      devices_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceList();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              devices_.add(
-                  input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          devices_ = java.util.Collections.unmodifiableList(devices_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Custom build() {
+                context.ContextOuterClass.Constraint_Custom result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Custom buildPartial() {
+                context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    public static final int DEVICES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Device> devices_;
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
-      return devices_;
-    }
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-        getDevicesOrBuilderList() {
-      return devices_;
-    }
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    @java.lang.Override
-    public int getDevicesCount() {
-      return devices_.size();
-    }
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Device getDevices(int index) {
-      return devices_.get(index);
-    }
-    /**
-     * <code>repeated .context.Device devices = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-        int index) {
-      return devices_.get(index);
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.constraintType_ = constraintType_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.constraintValue_ = constraintValue_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_Custom) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_Custom) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_Custom other) {
+                if (other == context.ContextOuterClass.Constraint_Custom.getDefaultInstance())
+                    return this;
+                if (!other.getConstraintType().isEmpty()) {
+                    constraintType_ = other.constraintType_;
+                    bitField0_ |= 0x00000001;
+                    onChanged();
+                }
+                if (!other.getConstraintValue().isEmpty()) {
+                    constraintValue_ = other.constraintValue_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < devices_.size(); i++) {
-        output.writeMessage(1, devices_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            @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:
+                                {
+                                    constraintType_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    constraintValue_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < devices_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, devices_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private int bitField0_;
+
+            private java.lang.Object constraintType_ = "";
+
+            /**
+             * <code>string constraint_type = 1;</code>
+             * @return The constraintType.
+             */
+            public java.lang.String getConstraintType() {
+                java.lang.Object ref = constraintType_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    constraintType_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
-
-      if (!getDevicesList()
-          .equals(other.getDevicesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>string constraint_type = 1;</code>
+             * @return The bytes for constraintType.
+             */
+            public com.google.protobuf.ByteString getConstraintTypeBytes() {
+                java.lang.Object ref = constraintType_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    constraintType_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getDevicesCount() > 0) {
-        hash = (37 * hash) + DEVICES_FIELD_NUMBER;
-        hash = (53 * hash) + getDevicesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>string constraint_type = 1;</code>
+             * @param value The constraintType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConstraintType(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                constraintType_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>string constraint_type = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearConstraintType() {
+                constraintType_ = getDefaultInstance().getConstraintType();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>string constraint_type = 1;</code>
+             * @param value The bytes for constraintType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConstraintTypeBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                constraintType_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.DeviceList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceList)
-        context.ContextOuterClass.DeviceListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDevicesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          devicesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceList build() {
-        context.ContextOuterClass.DeviceList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceList buildPartial() {
-        context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
-        int from_bitField0_ = bitField0_;
-        if (devicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            devices_ = java.util.Collections.unmodifiableList(devices_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.devices_ = devices_;
-        } else {
-          result.devices_ = devicesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceList) {
-          return mergeFrom((context.ContextOuterClass.DeviceList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceList other) {
-        if (other == context.ContextOuterClass.DeviceList.getDefaultInstance()) return this;
-        if (devicesBuilder_ == null) {
-          if (!other.devices_.isEmpty()) {
-            if (devices_.isEmpty()) {
-              devices_ = other.devices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDevicesIsMutable();
-              devices_.addAll(other.devices_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.devices_.isEmpty()) {
-            if (devicesBuilder_.isEmpty()) {
-              devicesBuilder_.dispose();
-              devicesBuilder_ = null;
-              devices_ = other.devices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              devicesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDevicesFieldBuilder() : null;
-            } else {
-              devicesBuilder_.addAllMessages(other.devices_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Device> devices_ =
-        java.util.Collections.emptyList();
-      private void ensureDevicesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;
-
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
-        if (devicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(devices_);
-        } else {
-          return devicesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public int getDevicesCount() {
-        if (devicesBuilder_ == null) {
-          return devices_.size();
-        } else {
-          return devicesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public context.ContextOuterClass.Device getDevices(int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);
-        } else {
-          return devicesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.set(index, value);
-          onChanged();
-        } else {
-          devicesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder setDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder addDevices(context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.add(value);
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device value) {
-        if (devicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevicesIsMutable();
-          devices_.add(index, value);
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder addDevices(
-          context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder addDevices(
-          int index, context.ContextOuterClass.Device.Builder builderForValue) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          devicesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder addAllDevices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, devices_);
-          onChanged();
-        } else {
-          devicesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder clearDevices() {
-        if (devicesBuilder_ == null) {
-          devices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          devicesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public Builder removeDevices(int index) {
-        if (devicesBuilder_ == null) {
-          ensureDevicesIsMutable();
-          devices_.remove(index);
-          onChanged();
-        } else {
-          devicesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public context.ContextOuterClass.Device.Builder getDevicesBuilder(
-          int index) {
-        return getDevicesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(
-          int index) {
-        if (devicesBuilder_ == null) {
-          return devices_.get(index);  } else {
-          return devicesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> 
-           getDevicesOrBuilderList() {
-        if (devicesBuilder_ != null) {
-          return devicesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(devices_);
-        }
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
-        return getDevicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Device.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public context.ContextOuterClass.Device.Builder addDevicesBuilder(
-          int index) {
-        return getDevicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Device.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Device devices = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Device.Builder> 
-           getDevicesBuilderList() {
-        return getDevicesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> 
-          getDevicesFieldBuilder() {
-        if (devicesBuilder_ == null) {
-          devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(
-                  devices_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          devices_ = null;
-        }
-        return devicesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceList)
-    }
+            private java.lang.Object constraintValue_ = "";
+
+            /**
+             * <code>string constraint_value = 2;</code>
+             * @return The constraintValue.
+             */
+            public java.lang.String getConstraintValue() {
+                java.lang.Object ref = constraintValue_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    constraintValue_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    // @@protoc_insertion_point(class_scope:context.DeviceList)
-    private static final context.ContextOuterClass.DeviceList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceList();
-    }
+            /**
+             * <code>string constraint_value = 2;</code>
+             * @return The bytes for constraintValue.
+             */
+            public com.google.protobuf.ByteString getConstraintValueBytes() {
+                java.lang.Object ref = constraintValue_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    constraintValue_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    public static context.ContextOuterClass.DeviceList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>string constraint_value = 2;</code>
+             * @param value The constraintValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConstraintValue(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                constraintValue_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<DeviceList>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceList>() {
-      @java.lang.Override
-      public DeviceList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>string constraint_value = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearConstraintValue() {
+                constraintValue_ = getDefaultInstance().getConstraintValue();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>string constraint_value = 2;</code>
+             * @param value The bytes for constraintValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setConstraintValueBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                constraintValue_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_Custom)
+        }
 
-  public interface DeviceFilterOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceFilter)
-      com.google.protobuf.MessageOrBuilder {
+        // @@protoc_insertion_point(class_scope:context.Constraint_Custom)
+        private static final context.ContextOuterClass.Constraint_Custom DEFAULT_INSTANCE;
 
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     * @return Whether the deviceIds field is set.
-     */
-    boolean hasDeviceIds();
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     * @return The deviceIds.
-     */
-    context.ContextOuterClass.DeviceIdList getDeviceIds();
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     */
-    context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder();
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Custom();
+        }
 
-    /**
-     * <code>bool include_endpoints = 2;</code>
-     * @return The includeEndpoints.
-     */
-    boolean getIncludeEndpoints();
+        public static context.ContextOuterClass.Constraint_Custom getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    /**
-     * <code>bool include_config_rules = 3;</code>
-     * @return The includeConfigRules.
-     */
-    boolean getIncludeConfigRules();
+        private static final com.google.protobuf.Parser<Constraint_Custom> PARSER = new com.google.protobuf.AbstractParser<Constraint_Custom>() {
 
-    /**
-     * <code>bool include_components = 4;</code>
-     * @return The includeComponents.
-     */
-    boolean getIncludeComponents();
-  }
-  /**
-   * Protobuf type {@code context.DeviceFilter}
-   */
-  public static final class DeviceFilter extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceFilter)
-      DeviceFilterOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceFilter.newBuilder() to construct.
-    private DeviceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceFilter() {
-    }
+            @java.lang.Override
+            public Constraint_Custom 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();
+            }
+        };
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceFilter();
-    }
+        public static com.google.protobuf.Parser<Constraint_Custom> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceFilter(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.DeviceIdList.Builder subBuilder = null;
-              if (deviceIds_ != null) {
-                subBuilder = deviceIds_.toBuilder();
-              }
-              deviceIds_ = input.readMessage(context.ContextOuterClass.DeviceIdList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceIds_);
-                deviceIds_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              includeEndpoints_ = input.readBool();
-              break;
-            }
-            case 24: {
-
-              includeConfigRules_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeComponents_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_Custom> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static final int DEVICE_IDS_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.DeviceIdList deviceIds_;
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     * @return Whether the deviceIds field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceIds() {
-      return deviceIds_ != null;
-    }
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     * @return The deviceIds.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdList getDeviceIds() {
-      return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
-    }
-    /**
-     * <code>.context.DeviceIdList device_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-      return getDeviceIds();
-    }
+    public interface Constraint_ScheduleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Schedule)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;
-    private boolean includeEndpoints_;
-    /**
-     * <code>bool include_endpoints = 2;</code>
-     * @return The includeEndpoints.
-     */
-    @java.lang.Override
-    public boolean getIncludeEndpoints() {
-      return includeEndpoints_;
-    }
+        /**
+         * <code>float start_timestamp = 1;</code>
+         * @return The startTimestamp.
+         */
+        float getStartTimestamp();
 
-    public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;
-    private boolean includeConfigRules_;
-    /**
-     * <code>bool include_config_rules = 3;</code>
-     * @return The includeConfigRules.
-     */
-    @java.lang.Override
-    public boolean getIncludeConfigRules() {
-      return includeConfigRules_;
+        /**
+         * <code>float duration_days = 2;</code>
+         * @return The durationDays.
+         */
+        float getDurationDays();
     }
 
-    public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;
-    private boolean includeComponents_;
     /**
-     * <code>bool include_components = 4;</code>
-     * @return The includeComponents.
+     * Protobuf type {@code context.Constraint_Schedule}
      */
-    @java.lang.Override
-    public boolean getIncludeComponents() {
-      return includeComponents_;
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    public static final class Constraint_Schedule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Schedule)
+    Constraint_ScheduleOrBuilder {
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (deviceIds_ != null) {
-        output.writeMessage(1, getDeviceIds());
-      }
-      if (includeEndpoints_ != false) {
-        output.writeBool(2, includeEndpoints_);
-      }
-      if (includeConfigRules_ != false) {
-        output.writeBool(3, includeConfigRules_);
-      }
-      if (includeComponents_ != false) {
-        output.writeBool(4, includeComponents_);
-      }
-      unknownFields.writeTo(output);
-    }
+        // Use Constraint_Schedule.newBuilder() to construct.
+        private Constraint_Schedule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (deviceIds_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDeviceIds());
-      }
-      if (includeEndpoints_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, includeEndpoints_);
-      }
-      if (includeConfigRules_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, includeConfigRules_);
-      }
-      if (includeComponents_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, includeComponents_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private Constraint_Schedule() {
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceFilter)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceFilter other = (context.ContextOuterClass.DeviceFilter) obj;
-
-      if (hasDeviceIds() != other.hasDeviceIds()) return false;
-      if (hasDeviceIds()) {
-        if (!getDeviceIds()
-            .equals(other.getDeviceIds())) return false;
-      }
-      if (getIncludeEndpoints()
-          != other.getIncludeEndpoints()) return false;
-      if (getIncludeConfigRules()
-          != other.getIncludeConfigRules()) return false;
-      if (getIncludeComponents()
-          != other.getIncludeComponents()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_Schedule();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDeviceIds()) {
-        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceIds().hashCode();
-      }
-      hash = (37 * hash) + INCLUDE_ENDPOINTS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeEndpoints());
-      hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeConfigRules());
-      hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeComponents());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
+        }
 
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceFilter prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.DeviceFilter}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceFilter)
-        context.ContextOuterClass.DeviceFilterOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = null;
-        } else {
-          deviceIds_ = null;
-          deviceIdsBuilder_ = null;
-        }
-        includeEndpoints_ = false;
-
-        includeConfigRules_ = false;
-
-        includeComponents_ = false;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceFilter.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceFilter build() {
-        context.ContextOuterClass.DeviceFilter result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceFilter buildPartial() {
-        context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
-        if (deviceIdsBuilder_ == null) {
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        result.includeEndpoints_ = includeEndpoints_;
-        result.includeConfigRules_ = includeConfigRules_;
-        result.includeComponents_ = includeComponents_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceFilter) {
-          return mergeFrom((context.ContextOuterClass.DeviceFilter)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceFilter other) {
-        if (other == context.ContextOuterClass.DeviceFilter.getDefaultInstance()) return this;
-        if (other.hasDeviceIds()) {
-          mergeDeviceIds(other.getDeviceIds());
-        }
-        if (other.getIncludeEndpoints() != false) {
-          setIncludeEndpoints(other.getIncludeEndpoints());
-        }
-        if (other.getIncludeConfigRules() != false) {
-          setIncludeConfigRules(other.getIncludeConfigRules());
-        }
-        if (other.getIncludeComponents() != false) {
-          setIncludeComponents(other.getIncludeComponents());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceFilter parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceFilter) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.DeviceIdList deviceIds_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> deviceIdsBuilder_;
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       * @return Whether the deviceIds field is set.
-       */
-      public boolean hasDeviceIds() {
-        return deviceIdsBuilder_ != null || deviceIds_ != null;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       * @return The deviceIds.
-       */
-      public context.ContextOuterClass.DeviceIdList getDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
-        } else {
-          return deviceIdsBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceIds_ = value;
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder setDeviceIds(
-          context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
-        if (deviceIdsBuilder_ == null) {
-          if (deviceIds_ != null) {
-            deviceIds_ =
-              context.ContextOuterClass.DeviceIdList.newBuilder(deviceIds_).mergeFrom(value).buildPartial();
-          } else {
-            deviceIds_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public Builder clearDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = null;
-          onChanged();
-        } else {
-          deviceIds_ = null;
-          deviceIdsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
-        
-        onChanged();
-        return getDeviceIdsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
-        if (deviceIdsBuilder_ != null) {
-          return deviceIdsBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceIds_ == null ?
-              context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
-        }
-      }
-      /**
-       * <code>.context.DeviceIdList device_ids = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> 
-          getDeviceIdsFieldBuilder() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder>(
-                  getDeviceIds(),
-                  getParentForChildren(),
-                  isClean());
-          deviceIds_ = null;
-        }
-        return deviceIdsBuilder_;
-      }
-
-      private boolean includeEndpoints_ ;
-      /**
-       * <code>bool include_endpoints = 2;</code>
-       * @return The includeEndpoints.
-       */
-      @java.lang.Override
-      public boolean getIncludeEndpoints() {
-        return includeEndpoints_;
-      }
-      /**
-       * <code>bool include_endpoints = 2;</code>
-       * @param value The includeEndpoints to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeEndpoints(boolean value) {
-        
-        includeEndpoints_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_endpoints = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeEndpoints() {
-        
-        includeEndpoints_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeConfigRules_ ;
-      /**
-       * <code>bool include_config_rules = 3;</code>
-       * @return The includeConfigRules.
-       */
-      @java.lang.Override
-      public boolean getIncludeConfigRules() {
-        return includeConfigRules_;
-      }
-      /**
-       * <code>bool include_config_rules = 3;</code>
-       * @param value The includeConfigRules to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeConfigRules(boolean value) {
-        
-        includeConfigRules_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_config_rules = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConfigRules() {
-        
-        includeConfigRules_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeComponents_ ;
-      /**
-       * <code>bool include_components = 4;</code>
-       * @return The includeComponents.
-       */
-      @java.lang.Override
-      public boolean getIncludeComponents() {
-        return includeComponents_;
-      }
-      /**
-       * <code>bool include_components = 4;</code>
-       * @param value The includeComponents to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeComponents(boolean value) {
-        
-        includeComponents_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_components = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeComponents() {
-        
-        includeComponents_ = false;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceFilter)
-    }
+        private float startTimestamp_ = 0F;
 
-    // @@protoc_insertion_point(class_scope:context.DeviceFilter)
-    private static final context.ContextOuterClass.DeviceFilter DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceFilter();
-    }
+        /**
+         * <code>float start_timestamp = 1;</code>
+         * @return The startTimestamp.
+         */
+        @java.lang.Override
+        public float getStartTimestamp() {
+            return startTimestamp_;
+        }
 
-    public static context.ContextOuterClass.DeviceFilter getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int DURATION_DAYS_FIELD_NUMBER = 2;
 
-    private static final com.google.protobuf.Parser<DeviceFilter>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceFilter>() {
-      @java.lang.Override
-      public DeviceFilter parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceFilter(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceFilter> parser() {
-      return PARSER;
-    }
+        private float durationDays_ = 0F;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceFilter> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>float duration_days = 2;</code>
+         * @return The durationDays.
+         */
+        @java.lang.Override
+        public float getDurationDays() {
+            return durationDays_;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        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;
+        }
 
-  public interface DeviceEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.DeviceEvent)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+                output.writeFloat(1, startTimestamp_);
+            }
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+                output.writeFloat(2, durationDays_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Float.floatToRawIntBits(startTimestamp_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, startTimestamp_);
+            }
+            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_Schedule)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj;
+            if (java.lang.Float.floatToIntBits(getStartTimestamp()) != java.lang.Float.floatToIntBits(other.getStartTimestamp()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
+                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) + START_TIMESTAMP_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getStartTimestamp());
+            hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     * @return Whether the deviceConfig field is set.
-     */
-    boolean hasDeviceConfig();
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     * @return The deviceConfig.
-     */
-    context.ContextOuterClass.DeviceConfig getDeviceConfig();
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     */
-    context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.DeviceEvent}
-   */
-  public static final class DeviceEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.DeviceEvent)
-      DeviceEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceEvent.newBuilder() to construct.
-    private DeviceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceEvent() {
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceEvent();
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-              if (deviceConfig_ != null) {
-                subBuilder = deviceConfig_.toBuilder();
-              }
-              deviceConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceConfig_);
-                deviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;
-    private context.ContextOuterClass.DeviceConfig deviceConfig_;
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     * @return Whether the deviceConfig field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceConfig() {
-      return deviceConfig_ != null;
-    }
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     * @return The deviceConfig.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
-      return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-    }
-    /**
-     * <code>.context.DeviceConfig device_config = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-      return getDeviceConfig();
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (deviceId_ != null) {
-        output.writeMessage(2, getDeviceId());
-      }
-      if (deviceConfig_ != null) {
-        output.writeMessage(3, getDeviceConfig());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getDeviceId());
-      }
-      if (deviceConfig_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getDeviceConfig());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.DeviceEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.DeviceEvent other = (context.ContextOuterClass.DeviceEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (hasDeviceConfig() != other.hasDeviceConfig()) return false;
-      if (hasDeviceConfig()) {
-        if (!getDeviceConfig()
-            .equals(other.getDeviceConfig())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      if (hasDeviceConfig()) {
-        hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceConfig().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.DeviceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.DeviceEvent prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_Schedule prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.DeviceEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.DeviceEvent)
-        context.ContextOuterClass.DeviceEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.DeviceEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceEvent build() {
-        context.ContextOuterClass.DeviceEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.DeviceEvent buildPartial() {
-        context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (deviceConfigBuilder_ == null) {
-          result.deviceConfig_ = deviceConfig_;
-        } else {
-          result.deviceConfig_ = deviceConfigBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.DeviceEvent) {
-          return mergeFrom((context.ContextOuterClass.DeviceEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.DeviceEvent other) {
-        if (other == context.ContextOuterClass.DeviceEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (other.hasDeviceConfig()) {
-          mergeDeviceConfig(other.getDeviceConfig());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.DeviceEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.DeviceEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceConfig deviceConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       * @return Whether the deviceConfig field is set.
-       */
-      public boolean hasDeviceConfig() {
-        return deviceConfigBuilder_ != null || deviceConfig_ != null;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       * @return The deviceConfig.
-       */
-      public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-        } else {
-          return deviceConfigBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceConfig_ = value;
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder setDeviceConfig(
-          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (deviceConfigBuilder_ == null) {
-          if (deviceConfig_ != null) {
-            deviceConfig_ =
-              context.ContextOuterClass.DeviceConfig.newBuilder(deviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            deviceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          deviceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public Builder clearDeviceConfig() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfig_ = null;
-          onChanged();
-        } else {
-          deviceConfig_ = null;
-          deviceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
-        
-        onChanged();
-        return getDeviceConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
-        if (deviceConfigBuilder_ != null) {
-          return deviceConfigBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceConfig_ == null ?
-              context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig device_config = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> 
-          getDeviceConfigFieldBuilder() {
-        if (deviceConfigBuilder_ == null) {
-          deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(
-                  getDeviceConfig(),
-                  getParentForChildren(),
-                  isClean());
-          deviceConfig_ = null;
-        }
-        return deviceConfigBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.DeviceEvent)
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.DeviceEvent)
-    private static final context.ContextOuterClass.DeviceEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceEvent();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static context.ContextOuterClass.DeviceEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_Schedule}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Schedule)
+        context.ContextOuterClass.Constraint_ScheduleOrBuilder {
 
-    private static final com.google.protobuf.Parser<DeviceEvent>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceEvent>() {
-      @java.lang.Override
-      public DeviceEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceEvent> parser() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceEvent> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
+            private Builder() {
+            }
 
-  }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-  public interface LinkIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkId)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                startTimestamp_ = 0F;
+                durationDays_ = 0F;
+                return this;
+            }
 
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     * @return Whether the linkUuid field is set.
-     */
-    boolean hasLinkUuid();
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     * @return The linkUuid.
-     */
-    context.ContextOuterClass.Uuid getLinkUuid();
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Link ----------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.LinkId}
-   */
-  public static final class LinkId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkId)
-      LinkIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use LinkId.newBuilder() to construct.
-    private LinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private LinkId() {
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new LinkId();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (linkUuid_ != null) {
-                subBuilder = linkUuid_.toBuilder();
-              }
-              linkUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkUuid_);
-                linkUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Schedule build() {
+                context.ContextOuterClass.Constraint_Schedule result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Schedule buildPartial() {
+                context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    public static final int LINK_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid linkUuid_;
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     * @return Whether the linkUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasLinkUuid() {
-      return linkUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     * @return The linkUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getLinkUuid() {
-      return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
-    }
-    /**
-     * <code>.context.Uuid link_uuid = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-      return getLinkUuid();
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.startTimestamp_ = startTimestamp_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.durationDays_ = durationDays_;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_Schedule) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_Schedule) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) {
+                if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance())
+                    return this;
+                if (other.getStartTimestamp() != 0F) {
+                    setStartTimestamp(other.getStartTimestamp());
+                }
+                if (other.getDurationDays() != 0F) {
+                    setDurationDays(other.getDurationDays());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (linkUuid_ != null) {
-        output.writeMessage(1, getLinkUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (linkUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getLinkUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @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 13:
+                                {
+                                    startTimestamp_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    durationDays_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.LinkId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.LinkId other = (context.ContextOuterClass.LinkId) obj;
-
-      if (hasLinkUuid() != other.hasLinkUuid()) return false;
-      if (hasLinkUuid()) {
-        if (!getLinkUuid()
-            .equals(other.getLinkUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasLinkUuid()) {
-        hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private float startTimestamp_;
 
-    public static context.ContextOuterClass.LinkId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>float start_timestamp = 1;</code>
+             * @return The startTimestamp.
+             */
+            @java.lang.Override
+            public float getStartTimestamp() {
+                return startTimestamp_;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.LinkId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>float start_timestamp = 1;</code>
+             * @param value The startTimestamp to set.
+             * @return This builder for chaining.
+             */
+            public Builder setStartTimestamp(float value) {
+                startTimestamp_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Link ----------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.LinkId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkId)
-        context.ContextOuterClass.LinkIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.LinkId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = null;
-        } else {
-          linkUuid_ = null;
-          linkUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkId build() {
-        context.ContextOuterClass.LinkId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkId buildPartial() {
-        context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
-        if (linkUuidBuilder_ == null) {
-          result.linkUuid_ = linkUuid_;
-        } else {
-          result.linkUuid_ = linkUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkId) {
-          return mergeFrom((context.ContextOuterClass.LinkId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.LinkId other) {
-        if (other == context.ContextOuterClass.LinkId.getDefaultInstance()) return this;
-        if (other.hasLinkUuid()) {
-          mergeLinkUuid(other.getLinkUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.LinkId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid linkUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       * @return Whether the linkUuid field is set.
-       */
-      public boolean hasLinkUuid() {
-        return linkUuidBuilder_ != null || linkUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       * @return The linkUuid.
-       */
-      public context.ContextOuterClass.Uuid getLinkUuid() {
-        if (linkUuidBuilder_ == null) {
-          return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
-        } else {
-          return linkUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder setLinkUuid(context.ContextOuterClass.Uuid value) {
-        if (linkUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          linkUuid_ = value;
-          onChanged();
-        } else {
-          linkUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder setLinkUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
-        if (linkUuidBuilder_ == null) {
-          if (linkUuid_ != null) {
-            linkUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(linkUuid_).mergeFrom(value).buildPartial();
-          } else {
-            linkUuid_ = value;
-          }
-          onChanged();
-        } else {
-          linkUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public Builder clearLinkUuid() {
-        if (linkUuidBuilder_ == null) {
-          linkUuid_ = null;
-          onChanged();
-        } else {
-          linkUuid_ = null;
-          linkUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
-        
-        onChanged();
-        return getLinkUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
-        if (linkUuidBuilder_ != null) {
-          return linkUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return linkUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid link_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getLinkUuidFieldBuilder() {
-        if (linkUuidBuilder_ == null) {
-          linkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getLinkUuid(),
-                  getParentForChildren(),
-                  isClean());
-          linkUuid_ = null;
-        }
-        return linkUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.LinkId)
-    }
+            /**
+             * <code>float start_timestamp = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearStartTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                startTimestamp_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.LinkId)
-    private static final context.ContextOuterClass.LinkId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkId();
-    }
+            private float durationDays_;
 
-    public static context.ContextOuterClass.LinkId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>float duration_days = 2;</code>
+             * @return The durationDays.
+             */
+            @java.lang.Override
+            public float getDurationDays() {
+                return durationDays_;
+            }
 
-    private static final com.google.protobuf.Parser<LinkId>
-        PARSER = new com.google.protobuf.AbstractParser<LinkId>() {
-      @java.lang.Override
-      public LinkId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<LinkId> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>float duration_days = 2;</code>
+             * @param value The durationDays to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDurationDays(float value) {
+                durationDays_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<LinkId> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>float duration_days = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDurationDays() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                durationDays_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_Schedule)
+        }
 
-  public interface LinkAttributesOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkAttributes)
-      com.google.protobuf.MessageOrBuilder {
+        // @@protoc_insertion_point(class_scope:context.Constraint_Schedule)
+        private static final context.ContextOuterClass.Constraint_Schedule DEFAULT_INSTANCE;
 
-    /**
-     * <code>float total_capacity_gbps = 1;</code>
-     * @return The totalCapacityGbps.
-     */
-    float getTotalCapacityGbps();
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Schedule();
+        }
 
-    /**
-     * <code>float used_capacity_gbps = 2;</code>
-     * @return The usedCapacityGbps.
-     */
-    float getUsedCapacityGbps();
-  }
-  /**
-   * Protobuf type {@code context.LinkAttributes}
-   */
-  public static final class LinkAttributes extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkAttributes)
-      LinkAttributesOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use LinkAttributes.newBuilder() to construct.
-    private LinkAttributes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private LinkAttributes() {
-    }
+        public static context.ContextOuterClass.Constraint_Schedule getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new LinkAttributes();
-    }
+        private static final com.google.protobuf.Parser<Constraint_Schedule> PARSER = new com.google.protobuf.AbstractParser<Constraint_Schedule>() {
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkAttributes(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              totalCapacityGbps_ = input.readFloat();
-              break;
-            }
-            case 21: {
-
-              usedCapacityGbps_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
-    }
+            @java.lang.Override
+            public Constraint_Schedule 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<Constraint_Schedule> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_Schedule> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
-    private float totalCapacityGbps_;
-    /**
-     * <code>float total_capacity_gbps = 1;</code>
-     * @return The totalCapacityGbps.
-     */
-    @java.lang.Override
-    public float getTotalCapacityGbps() {
-      return totalCapacityGbps_;
+    public interface GPS_PositionOrBuilder extends // @@protoc_insertion_point(interface_extends:context.GPS_Position)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>float latitude = 1;</code>
+         * @return The latitude.
+         */
+        float getLatitude();
+
+        /**
+         * <code>float longitude = 2;</code>
+         * @return The longitude.
+         */
+        float getLongitude();
     }
 
-    public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
-    private float usedCapacityGbps_;
     /**
-     * <code>float used_capacity_gbps = 2;</code>
-     * @return The usedCapacityGbps.
+     * Protobuf type {@code context.GPS_Position}
      */
-    @java.lang.Override
-    public float getUsedCapacityGbps() {
-      return usedCapacityGbps_;
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    public static final class GPS_Position extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.GPS_Position)
+    GPS_PositionOrBuilder {
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (totalCapacityGbps_ != 0F) {
-        output.writeFloat(1, totalCapacityGbps_);
-      }
-      if (usedCapacityGbps_ != 0F) {
-        output.writeFloat(2, usedCapacityGbps_);
-      }
-      unknownFields.writeTo(output);
-    }
+        // Use GPS_Position.newBuilder() to construct.
+        private GPS_Position(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (totalCapacityGbps_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, totalCapacityGbps_);
-      }
-      if (usedCapacityGbps_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, usedCapacityGbps_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private GPS_Position() {
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.LinkAttributes)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.LinkAttributes other = (context.ContextOuterClass.LinkAttributes) obj;
-
-      if (java.lang.Float.floatToIntBits(getTotalCapacityGbps())
-          != java.lang.Float.floatToIntBits(
-              other.getTotalCapacityGbps())) return false;
-      if (java.lang.Float.floatToIntBits(getUsedCapacityGbps())
-          != java.lang.Float.floatToIntBits(
-              other.getUsedCapacityGbps())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new GPS_Position();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + TOTAL_CAPACITY_GBPS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getTotalCapacityGbps());
-      hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getUsedCapacityGbps());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
+        }
 
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkAttributes parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.LinkAttributes prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int LATITUDE_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.LinkAttributes}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkAttributes)
-        context.ContextOuterClass.LinkAttributesOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        totalCapacityGbps_ = 0F;
-
-        usedCapacityGbps_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkAttributes.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkAttributes build() {
-        context.ContextOuterClass.LinkAttributes result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkAttributes buildPartial() {
-        context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
-        result.totalCapacityGbps_ = totalCapacityGbps_;
-        result.usedCapacityGbps_ = usedCapacityGbps_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkAttributes) {
-          return mergeFrom((context.ContextOuterClass.LinkAttributes)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.LinkAttributes other) {
-        if (other == context.ContextOuterClass.LinkAttributes.getDefaultInstance()) return this;
-        if (other.getTotalCapacityGbps() != 0F) {
-          setTotalCapacityGbps(other.getTotalCapacityGbps());
-        }
-        if (other.getUsedCapacityGbps() != 0F) {
-          setUsedCapacityGbps(other.getUsedCapacityGbps());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.LinkAttributes parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private float totalCapacityGbps_ ;
-      /**
-       * <code>float total_capacity_gbps = 1;</code>
-       * @return The totalCapacityGbps.
-       */
-      @java.lang.Override
-      public float getTotalCapacityGbps() {
-        return totalCapacityGbps_;
-      }
-      /**
-       * <code>float total_capacity_gbps = 1;</code>
-       * @param value The totalCapacityGbps to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTotalCapacityGbps(float value) {
-        
-        totalCapacityGbps_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float total_capacity_gbps = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTotalCapacityGbps() {
-        
-        totalCapacityGbps_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float usedCapacityGbps_ ;
-      /**
-       * <code>float used_capacity_gbps = 2;</code>
-       * @return The usedCapacityGbps.
-       */
-      @java.lang.Override
-      public float getUsedCapacityGbps() {
-        return usedCapacityGbps_;
-      }
-      /**
-       * <code>float used_capacity_gbps = 2;</code>
-       * @param value The usedCapacityGbps to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUsedCapacityGbps(float value) {
-        
-        usedCapacityGbps_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float used_capacity_gbps = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearUsedCapacityGbps() {
-        
-        usedCapacityGbps_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.LinkAttributes)
-    }
+        private float latitude_ = 0F;
 
-    // @@protoc_insertion_point(class_scope:context.LinkAttributes)
-    private static final context.ContextOuterClass.LinkAttributes DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkAttributes();
-    }
+        /**
+         * <code>float latitude = 1;</code>
+         * @return The latitude.
+         */
+        @java.lang.Override
+        public float getLatitude() {
+            return latitude_;
+        }
 
-    public static context.ContextOuterClass.LinkAttributes getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int LONGITUDE_FIELD_NUMBER = 2;
 
-    private static final com.google.protobuf.Parser<LinkAttributes>
-        PARSER = new com.google.protobuf.AbstractParser<LinkAttributes>() {
-      @java.lang.Override
-      public LinkAttributes parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkAttributes(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<LinkAttributes> parser() {
-      return PARSER;
-    }
+        private float longitude_ = 0F;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<LinkAttributes> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>float longitude = 2;</code>
+         * @return The longitude.
+         */
+        @java.lang.Override
+        public float getLongitude() {
+            return longitude_;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        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;
+        }
 
-  public interface LinkOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Link)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+                output.writeFloat(1, latitude_);
+            }
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+                output.writeFloat(2, longitude_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     * @return Whether the linkId field is set.
-     */
-    boolean hasLinkId();
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     * @return The linkId.
-     */
-    context.ContextOuterClass.LinkId getLinkId();
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
+            }
+            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.GPS_Position)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.GPS_Position other = (context.ContextOuterClass.GPS_Position) obj;
+            if (java.lang.Float.floatToIntBits(getLatitude()) != java.lang.Float.floatToIntBits(other.getLatitude()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
+                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) + LATITUDE_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
+            hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getLinkEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    int getLinkEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getLinkEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.GPS_Position parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     * @return Whether the attributes field is set.
-     */
-    boolean hasAttributes();
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     * @return The attributes.
-     */
-    context.ContextOuterClass.LinkAttributes getAttributes();
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     */
-    context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Link}
-   */
-  public static final class Link extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Link)
-      LinkOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Link.newBuilder() to construct.
-    private Link(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Link() {
-      name_ = "";
-      linkEndpointIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Link();
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Link(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.LinkId.Builder subBuilder = null;
-              if (linkId_ != null) {
-                subBuilder = linkId_.toBuilder();
-              }
-              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkId_);
-                linkId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              linkEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
-              if (attributes_ != null) {
-                subBuilder = attributes_.toBuilder();
-              }
-              attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(attributes_);
-                attributes_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Link_descriptor;
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int LINK_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.LinkId linkId_;
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     * @return Whether the linkId field is set.
-     */
-    @java.lang.Override
-    public boolean hasLinkId() {
-      return linkId_ != null;
-    }
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     * @return The linkId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkId() {
-      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-    }
-    /**
-     * <code>.context.LinkId link_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-      return getLinkId();
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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 context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
-      return linkEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getLinkEndpointIdsOrBuilderList() {
-      return linkEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getLinkEndpointIdsCount() {
-      return linkEndpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
-      return linkEndpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
-        int index) {
-      return linkEndpointIds_.get(index);
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.LinkAttributes attributes_;
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     * @return Whether the attributes field is set.
-     */
-    @java.lang.Override
-    public boolean hasAttributes() {
-      return attributes_ != null;
-    }
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     * @return The attributes.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkAttributes getAttributes() {
-      return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
-    }
-    /**
-     * <code>.context.LinkAttributes attributes = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-      return getAttributes();
-    }
+        public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (linkId_ != null) {
-        output.writeMessage(1, getLinkId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < linkEndpointIds_.size(); i++) {
-        output.writeMessage(3, linkEndpointIds_.get(i));
-      }
-      if (attributes_ != null) {
-        output.writeMessage(4, getAttributes());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (linkId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getLinkId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < linkEndpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, linkEndpointIds_.get(i));
-      }
-      if (attributes_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getAttributes());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Link)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Link other = (context.ContextOuterClass.Link) obj;
-
-      if (hasLinkId() != other.hasLinkId()) return false;
-      if (hasLinkId()) {
-        if (!getLinkId()
-            .equals(other.getLinkId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getLinkEndpointIdsList()
-          .equals(other.getLinkEndpointIdsList())) return false;
-      if (hasAttributes() != other.hasAttributes()) return false;
-      if (hasAttributes()) {
-        if (!getAttributes()
-            .equals(other.getAttributes())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasLinkId()) {
-        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (getLinkEndpointIdsCount() > 0) {
-        hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
-      }
-      if (hasAttributes()) {
-        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
-        hash = (53 * hash) + getAttributes().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.GPS_Position prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static context.ContextOuterClass.Link parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Link parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Link parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Link parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Link prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Link}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Link)
-        context.ContextOuterClass.LinkOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Link_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Link.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getLinkEndpointIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (linkEndpointIdsBuilder_ == null) {
-          linkEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          linkEndpointIdsBuilder_.clear();
-        }
-        if (attributesBuilder_ == null) {
-          attributes_ = null;
-        } else {
-          attributes_ = null;
-          attributesBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Link_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Link getDefaultInstanceForType() {
-        return context.ContextOuterClass.Link.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Link build() {
-        context.ContextOuterClass.Link result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Link buildPartial() {
-        context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
-        int from_bitField0_ = bitField0_;
-        if (linkIdBuilder_ == null) {
-          result.linkId_ = linkId_;
-        } else {
-          result.linkId_ = linkIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (linkEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.linkEndpointIds_ = linkEndpointIds_;
-        } else {
-          result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
-        }
-        if (attributesBuilder_ == null) {
-          result.attributes_ = attributes_;
-        } else {
-          result.attributes_ = attributesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Link) {
-          return mergeFrom((context.ContextOuterClass.Link)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Link other) {
-        if (other == context.ContextOuterClass.Link.getDefaultInstance()) return this;
-        if (other.hasLinkId()) {
-          mergeLinkId(other.getLinkId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (linkEndpointIdsBuilder_ == null) {
-          if (!other.linkEndpointIds_.isEmpty()) {
-            if (linkEndpointIds_.isEmpty()) {
-              linkEndpointIds_ = other.linkEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureLinkEndpointIdsIsMutable();
-              linkEndpointIds_.addAll(other.linkEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkEndpointIds_.isEmpty()) {
-            if (linkEndpointIdsBuilder_.isEmpty()) {
-              linkEndpointIdsBuilder_.dispose();
-              linkEndpointIdsBuilder_ = null;
-              linkEndpointIds_ = other.linkEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              linkEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkEndpointIdsFieldBuilder() : null;
-            } else {
-              linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
-            }
-          }
-        }
-        if (other.hasAttributes()) {
-          mergeAttributes(other.getAttributes());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Link parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Link) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.LinkId linkId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       * @return Whether the linkId field is set.
-       */
-      public boolean hasLinkId() {
-        return linkIdBuilder_ != null || linkId_ != null;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       * @return The linkId.
-       */
-      public context.ContextOuterClass.LinkId getLinkId() {
-        if (linkIdBuilder_ == null) {
-          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        } else {
-          return linkIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          linkId_ = value;
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder setLinkId(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdBuilder_ == null) {
-          linkId_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (linkId_ != null) {
-            linkId_ =
-              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
-          } else {
-            linkId_ = value;
-          }
-          onChanged();
-        } else {
-          linkIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public Builder clearLinkId() {
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-          onChanged();
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-        
-        onChanged();
-        return getLinkIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-        if (linkIdBuilder_ != null) {
-          return linkIdBuilder_.getMessageOrBuilder();
-        } else {
-          return linkId_ == null ?
-              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdFieldBuilder() {
-        if (linkIdBuilder_ == null) {
-          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  getLinkId(),
-                  getParentForChildren(),
-                  isClean());
-          linkId_ = null;
-        }
-        return linkIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
-        if (linkEndpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(linkEndpointIds_);
-        } else {
-          return linkEndpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public int getLinkEndpointIdsCount() {
-        if (linkEndpointIdsBuilder_ == null) {
-          return linkEndpointIds_.size();
-        } else {
-          return linkEndpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
-        if (linkEndpointIdsBuilder_ == null) {
-          return linkEndpointIds_.get(index);
-        } else {
-          return linkEndpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder setLinkEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (linkEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.set(index, value);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder setLinkEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (linkEndpointIdsBuilder_ == null) {
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (linkEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.add(value);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder addLinkEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (linkEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.add(index, value);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder addLinkEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (linkEndpointIdsBuilder_ == null) {
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder addLinkEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (linkEndpointIdsBuilder_ == null) {
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder addAllLinkEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (linkEndpointIdsBuilder_ == null) {
-          ensureLinkEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, linkEndpointIds_);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder clearLinkEndpointIds() {
-        if (linkEndpointIdsBuilder_ == null) {
-          linkEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public Builder removeLinkEndpointIds(int index) {
-        if (linkEndpointIdsBuilder_ == null) {
-          ensureLinkEndpointIdsIsMutable();
-          linkEndpointIds_.remove(index);
-          onChanged();
-        } else {
-          linkEndpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(
-          int index) {
-        return getLinkEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
-          int index) {
-        if (linkEndpointIdsBuilder_ == null) {
-          return linkEndpointIds_.get(index);  } else {
-          return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getLinkEndpointIdsOrBuilderList() {
-        if (linkEndpointIdsBuilder_ != null) {
-          return linkEndpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(linkEndpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
-        return getLinkEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(
-          int index) {
-        return getLinkEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId link_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getLinkEndpointIdsBuilderList() {
-        return getLinkEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getLinkEndpointIdsFieldBuilder() {
-        if (linkEndpointIdsBuilder_ == null) {
-          linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  linkEndpointIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          linkEndpointIds_ = null;
-        }
-        return linkEndpointIdsBuilder_;
-      }
-
-      private context.ContextOuterClass.LinkAttributes attributes_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> attributesBuilder_;
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       * @return Whether the attributes field is set.
-       */
-      public boolean hasAttributes() {
-        return attributesBuilder_ != null || attributes_ != null;
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       * @return The attributes.
-       */
-      public context.ContextOuterClass.LinkAttributes getAttributes() {
-        if (attributesBuilder_ == null) {
-          return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
-        } else {
-          return attributesBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public Builder setAttributes(context.ContextOuterClass.LinkAttributes value) {
-        if (attributesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          attributes_ = value;
-          onChanged();
-        } else {
-          attributesBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public Builder setAttributes(
-          context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
-        if (attributesBuilder_ == null) {
-          attributes_ = builderForValue.build();
-          onChanged();
-        } else {
-          attributesBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
-        if (attributesBuilder_ == null) {
-          if (attributes_ != null) {
-            attributes_ =
-              context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
-          } else {
-            attributes_ = value;
-          }
-          onChanged();
-        } else {
-          attributesBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public Builder clearAttributes() {
-        if (attributesBuilder_ == null) {
-          attributes_ = null;
-          onChanged();
-        } else {
-          attributes_ = null;
-          attributesBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
-        
-        onChanged();
-        return getAttributesFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
-        if (attributesBuilder_ != null) {
-          return attributesBuilder_.getMessageOrBuilder();
-        } else {
-          return attributes_ == null ?
-              context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
-        }
-      }
-      /**
-       * <code>.context.LinkAttributes attributes = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> 
-          getAttributesFieldBuilder() {
-        if (attributesBuilder_ == null) {
-          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder>(
-                  getAttributes(),
-                  getParentForChildren(),
-                  isClean());
-          attributes_ = null;
-        }
-        return attributesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Link)
-    }
+        /**
+         * Protobuf type {@code context.GPS_Position}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.GPS_Position)
+        context.ContextOuterClass.GPS_PositionOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:context.Link)
-    private static final context.ContextOuterClass.Link DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Link();
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
+            }
 
-    public static context.ContextOuterClass.Link getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
+            }
 
-    private static final com.google.protobuf.Parser<Link>
-        PARSER = new com.google.protobuf.AbstractParser<Link>() {
-      @java.lang.Override
-      public Link parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Link(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Link> parser() {
-      return PARSER;
-    }
+            // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Link> getParserForType() {
-      return PARSER;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Link getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                latitude_ = 0F;
+                longitude_ = 0F;
+                return this;
+            }
 
-  }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
+            }
 
-  public interface LinkIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkIdList)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
+                return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+            }
 
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.LinkId> 
-        getLinkIdsList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    context.ContextOuterClass.LinkId getLinkIds(int index);
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    int getLinkIdsCount();
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.LinkIdList}
-   */
-  public static final class LinkIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkIdList)
-      LinkIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use LinkIdList.newBuilder() to construct.
-    private LinkIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private LinkIdList() {
-      linkIds_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.GPS_Position build() {
+                context.ContextOuterClass.GPS_Position result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new LinkIdList();
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.GPS_Position buildPartial() {
+                context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              linkIds_.add(
-                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
-    }
+            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.latitude_ = latitude_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.longitude_ = longitude_;
+                }
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.GPS_Position) {
+                    return mergeFrom((context.ContextOuterClass.GPS_Position) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    public static final int LINK_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getLinkIdsCount() {
-      return linkIds_.size();
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkIds(int index) {
-      return linkIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index) {
-      return linkIds_.get(index);
-    }
+            public Builder mergeFrom(context.ContextOuterClass.GPS_Position other) {
+                if (other == context.ContextOuterClass.GPS_Position.getDefaultInstance())
+                    return this;
+                if (other.getLatitude() != 0F) {
+                    setLatitude(other.getLatitude());
+                }
+                if (other.getLongitude() != 0F) {
+                    setLongitude(other.getLongitude());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-      memoizedIsInitialized = 1;
-      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 13:
+                                {
+                                    latitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            case 21:
+                                {
+                                    longitude_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < linkIds_.size(); i++) {
-        output.writeMessage(1, linkIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < linkIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, linkIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private float latitude_;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.LinkIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
-
-      if (!getLinkIdsList()
-          .equals(other.getLinkIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>float latitude = 1;</code>
+             * @return The latitude.
+             */
+            @java.lang.Override
+            public float getLatitude() {
+                return latitude_;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getLinkIdsCount() > 0) {
-        hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>float latitude = 1;</code>
+             * @param value The latitude to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLatitude(float value) {
+                latitude_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>float latitude = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLatitude() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                latitude_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.LinkIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private float longitude_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.LinkIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkIdList)
-        context.ContextOuterClass.LinkIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getLinkIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkIdList build() {
-        context.ContextOuterClass.LinkIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkIdList buildPartial() {
-        context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (linkIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.linkIds_ = linkIds_;
-        } else {
-          result.linkIds_ = linkIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkIdList) {
-          return mergeFrom((context.ContextOuterClass.LinkIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.LinkIdList other) {
-        if (other == context.ContextOuterClass.LinkIdList.getDefaultInstance()) return this;
-        if (linkIdsBuilder_ == null) {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIds_.isEmpty()) {
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureLinkIdsIsMutable();
-              linkIds_.addAll(other.linkIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIdsBuilder_.isEmpty()) {
-              linkIdsBuilder_.dispose();
-              linkIdsBuilder_ = null;
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              linkIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkIdsFieldBuilder() : null;
-            } else {
-              linkIdsBuilder_.addAllMessages(other.linkIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.LinkIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
-
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-        if (linkIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        } else {
-          return linkIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public int getLinkIdsCount() {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.size();
-        } else {
-          return linkIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId getLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);
-        } else {
-          return linkIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder addLinkIds(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder addAllLinkIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, linkIds_);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder clearLinkIds() {
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public Builder removeLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.remove(index);
-          onChanged();
-        } else {
-          linkIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-          int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);  } else {
-          return linkIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-           getLinkIdsOrBuilderList() {
-        if (linkIdsBuilder_ != null) {
-          return linkIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
-        return getLinkIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId.Builder> 
-           getLinkIdsBuilderList() {
-        return getLinkIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdsFieldBuilder() {
-        if (linkIdsBuilder_ == null) {
-          linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  linkIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          linkIds_ = null;
-        }
-        return linkIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.LinkIdList)
-    }
+            /**
+             * <code>float longitude = 2;</code>
+             * @return The longitude.
+             */
+            @java.lang.Override
+            public float getLongitude() {
+                return longitude_;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.LinkIdList)
-    private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
-    }
+            /**
+             * <code>float longitude = 2;</code>
+             * @param value The longitude to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLongitude(float value) {
+                longitude_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>float longitude = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLongitude() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                longitude_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<LinkIdList>
-        PARSER = new com.google.protobuf.AbstractParser<LinkIdList>() {
-      @java.lang.Override
-      public LinkIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<LinkIdList> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<LinkIdList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.GPS_Position)
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        // @@protoc_insertion_point(class_scope:context.GPS_Position)
+        private static final context.ContextOuterClass.GPS_Position DEFAULT_INSTANCE;
 
-  }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.GPS_Position();
+        }
 
-  public interface LinkListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkList)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.GPS_Position getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Link> 
-        getLinksList();
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    context.ContextOuterClass.Link getLinks(int index);
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    int getLinksCount();
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList();
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.LinkList}
-   */
-  public static final class LinkList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkList)
-      LinkListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use LinkList.newBuilder() to construct.
-    private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private LinkList() {
-      links_ = java.util.Collections.emptyList();
-    }
+        private static final com.google.protobuf.Parser<GPS_Position> PARSER = new com.google.protobuf.AbstractParser<GPS_Position>() {
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new LinkList();
-    }
+            @java.lang.Override
+            public GPS_Position 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();
+            }
+        };
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              links_.add(
-                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          links_ = java.util.Collections.unmodifiableList(links_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
-    }
+        public static com.google.protobuf.Parser<GPS_Position> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<GPS_Position> getParserForType() {
+            return PARSER;
+        }
 
-    public static final int LINKS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Link> links_;
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-      return links_;
-    }
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-        getLinksOrBuilderList() {
-      return links_;
-    }
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    @java.lang.Override
-    public int getLinksCount() {
-      return links_.size();
-    }
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Link getLinks(int index) {
-      return links_.get(index);
-    }
-    /**
-     * <code>repeated .context.Link links = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-        int index) {
-      return links_.get(index);
+        @java.lang.Override
+        public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    public interface LocationOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Location)
+    com.google.protobuf.MessageOrBuilder {
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return Whether the region field is set.
+         */
+        boolean hasRegion();
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < links_.size(); i++) {
-        output.writeMessage(1, links_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return The region.
+         */
+        java.lang.String getRegion();
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < links_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, links_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return The bytes for region.
+         */
+        com.google.protobuf.ByteString getRegionBytes();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.LinkList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
-
-      if (!getLinksList()
-          .equals(other.getLinksList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         * @return Whether the gpsPosition field is set.
+         */
+        boolean hasGpsPosition();
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getLinksCount() > 0) {
-        hash = (37 * hash) + LINKS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinksList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         * @return The gpsPosition.
+         */
+        context.ContextOuterClass.GPS_Position getGpsPosition();
 
-    public static context.ContextOuterClass.LinkList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         */
+        context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+        context.ContextOuterClass.Location.LocationCase getLocationCase();
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
     /**
-     * Protobuf type {@code context.LinkList}
+     * Protobuf type {@code context.Location}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkList)
-        context.ContextOuterClass.LinkListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.LinkList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getLinksFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          linksBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkList build() {
-        context.ContextOuterClass.LinkList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkList buildPartial() {
-        context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
-        int from_bitField0_ = bitField0_;
-        if (linksBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            links_ = java.util.Collections.unmodifiableList(links_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.links_ = links_;
-        } else {
-          result.links_ = linksBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkList) {
-          return mergeFrom((context.ContextOuterClass.LinkList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.LinkList other) {
-        if (other == context.ContextOuterClass.LinkList.getDefaultInstance()) return this;
-        if (linksBuilder_ == null) {
-          if (!other.links_.isEmpty()) {
-            if (links_.isEmpty()) {
-              links_ = other.links_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureLinksIsMutable();
-              links_.addAll(other.links_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.links_.isEmpty()) {
-            if (linksBuilder_.isEmpty()) {
-              linksBuilder_.dispose();
-              linksBuilder_ = null;
-              links_ = other.links_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              linksBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinksFieldBuilder() : null;
-            } else {
-              linksBuilder_.addAllMessages(other.links_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.LinkList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Link> links_ =
-        java.util.Collections.emptyList();
-      private void ensureLinksIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;
-
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Link> getLinksList() {
-        if (linksBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(links_);
-        } else {
-          return linksBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public int getLinksCount() {
-        if (linksBuilder_ == null) {
-          return links_.size();
-        } else {
-          return linksBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public context.ContextOuterClass.Link getLinks(int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);
-        } else {
-          return linksBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.set(index, value);
-          onChanged();
-        } else {
-          linksBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder setLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder addLinks(context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.add(value);
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link value) {
-        if (linksBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinksIsMutable();
-          links_.add(index, value);
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder addLinks(
-          context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder addLinks(
-          int index, context.ContextOuterClass.Link.Builder builderForValue) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linksBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder addAllLinks(
-          java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, links_);
-          onChanged();
-        } else {
-          linksBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder clearLinks() {
-        if (linksBuilder_ == null) {
-          links_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          linksBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public Builder removeLinks(int index) {
-        if (linksBuilder_ == null) {
-          ensureLinksIsMutable();
-          links_.remove(index);
-          onChanged();
-        } else {
-          linksBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public context.ContextOuterClass.Link.Builder getLinksBuilder(
-          int index) {
-        return getLinksFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(
-          int index) {
-        if (linksBuilder_ == null) {
-          return links_.get(index);  } else {
-          return linksBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> 
-           getLinksOrBuilderList() {
-        if (linksBuilder_ != null) {
-          return linksBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(links_);
-        }
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder() {
-        return getLinksFieldBuilder().addBuilder(
-            context.ContextOuterClass.Link.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public context.ContextOuterClass.Link.Builder addLinksBuilder(
-          int index) {
-        return getLinksFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Link.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Link links = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Link.Builder> 
-           getLinksBuilderList() {
-        return getLinksFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> 
-          getLinksFieldBuilder() {
-        if (linksBuilder_ == null) {
-          linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(
-                  links_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          links_ = null;
-        }
-        return linksBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.LinkList)
-    }
-
-    // @@protoc_insertion_point(class_scope:context.LinkList)
-    private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
-    }
+    public static final class Location extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Location)
+    LocationOrBuilder {
 
-    public static context.ContextOuterClass.LinkList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private static final long serialVersionUID = 0L;
 
-    private static final com.google.protobuf.Parser<LinkList>
-        PARSER = new com.google.protobuf.AbstractParser<LinkList>() {
-      @java.lang.Override
-      public LinkList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<LinkList> parser() {
-      return PARSER;
-    }
+        // Use Location.newBuilder() to construct.
+        private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<LinkList> getParserForType() {
-      return PARSER;
-    }
+        private Location() {
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Location();
+        }
 
-  }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Location_descriptor;
+        }
 
-  public interface LinkEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.LinkEvent)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
+        }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+        private int locationCase_ = 0;
 
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return Whether the linkId field is set.
-     */
-    boolean hasLinkId();
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return The linkId.
-     */
-    context.ContextOuterClass.LinkId getLinkId();
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.LinkEvent}
-   */
-  public static final class LinkEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.LinkEvent)
-      LinkEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use LinkEvent.newBuilder() to construct.
-    private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private LinkEvent() {
-    }
+        @SuppressWarnings("serial")
+        private java.lang.Object location_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new LinkEvent();
-    }
+        public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private LinkEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.LinkId.Builder subBuilder = null;
-              if (linkId_ != null) {
-                subBuilder = linkId_.toBuilder();
-              }
-              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkId_);
-                linkId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
-    }
+            REGION(1), GPS_POSITION(2), LOCATION_NOT_SET(0);
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
-    }
+            private final int value;
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+            private LocationCase(int value) {
+                this.value = value;
+            }
 
-    public static final int LINK_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.LinkId linkId_;
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return Whether the linkId field is set.
-     */
-    @java.lang.Override
-    public boolean hasLinkId() {
-      return linkId_ != null;
-    }
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     * @return The linkId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkId() {
-      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-    }
-    /**
-     * <code>.context.LinkId link_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-      return getLinkId();
-    }
+            /**
+             * @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 LocationCase valueOf(int value) {
+                return forNumber(value);
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            public static LocationCase forNumber(int value) {
+                switch(value) {
+                    case 1:
+                        return REGION;
+                    case 2:
+                        return GPS_POSITION;
+                    case 0:
+                        return LOCATION_NOT_SET;
+                    default:
+                        return null;
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            public int getNumber() {
+                return this.value;
+            }
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (linkId_ != null) {
-        output.writeMessage(2, getLinkId());
-      }
-      unknownFields.writeTo(output);
-    }
+        public LocationCase getLocationCase() {
+            return LocationCase.forNumber(locationCase_);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (linkId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getLinkId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static final int REGION_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.LinkEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasLinkId() != other.hasLinkId()) return false;
-      if (hasLinkId()) {
-        if (!getLinkId()
-            .equals(other.getLinkId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return Whether the region field is set.
+         */
+        public boolean hasRegion() {
+            return locationCase_ == 1;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasLinkId()) {
-        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return The region.
+         */
+        public java.lang.String getRegion() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 1) {
+                ref = location_;
+            }
+            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();
+                if (locationCase_ == 1) {
+                    location_ = s;
+                }
+                return s;
+            }
+        }
 
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.LinkEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>string region = 1;</code>
+         * @return The bytes for region.
+         */
+        public com.google.protobuf.ByteString getRegionBytes() {
+            java.lang.Object ref = "";
+            if (locationCase_ == 1) {
+                ref = location_;
+            }
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                if (locationCase_ == 1) {
+                    location_ = b;
+                }
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int GPS_POSITION_FIELD_NUMBER = 2;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.LinkEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.LinkEvent)
-        context.ContextOuterClass.LinkEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.LinkEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkEvent build() {
-        context.ContextOuterClass.LinkEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.LinkEvent buildPartial() {
-        context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (linkIdBuilder_ == null) {
-          result.linkId_ = linkId_;
-        } else {
-          result.linkId_ = linkIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.LinkEvent) {
-          return mergeFrom((context.ContextOuterClass.LinkEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.LinkEvent other) {
-        if (other == context.ContextOuterClass.LinkEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasLinkId()) {
-          mergeLinkId(other.getLinkId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.LinkEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.LinkEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.LinkId linkId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       * @return Whether the linkId field is set.
-       */
-      public boolean hasLinkId() {
-        return linkIdBuilder_ != null || linkId_ != null;
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       * @return The linkId.
-       */
-      public context.ContextOuterClass.LinkId getLinkId() {
-        if (linkIdBuilder_ == null) {
-          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        } else {
-          return linkIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          linkId_ = value;
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public Builder setLinkId(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdBuilder_ == null) {
-          linkId_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (linkId_ != null) {
-            linkId_ =
-              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
-          } else {
-            linkId_ = value;
-          }
-          onChanged();
-        } else {
-          linkIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public Builder clearLinkId() {
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-          onChanged();
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-        
-        onChanged();
-        return getLinkIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-        if (linkIdBuilder_ != null) {
-          return linkIdBuilder_.getMessageOrBuilder();
-        } else {
-          return linkId_ == null ?
-              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdFieldBuilder() {
-        if (linkIdBuilder_ == null) {
-          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  getLinkId(),
-                  getParentForChildren(),
-                  isClean());
-          linkId_ = null;
-        }
-        return linkIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.LinkEvent)
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         * @return Whether the gpsPosition field is set.
+         */
+        @java.lang.Override
+        public boolean hasGpsPosition() {
+            return locationCase_ == 2;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.LinkEvent)
-    private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         * @return The gpsPosition.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.GPS_Position getGpsPosition() {
+            if (locationCase_ == 2) {
+                return (context.ContextOuterClass.GPS_Position) location_;
+            }
+            return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+        }
 
-    public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.GPS_Position gps_position = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
+            if (locationCase_ == 2) {
+                return (context.ContextOuterClass.GPS_Position) location_;
+            }
+            return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+        }
 
-    private static final com.google.protobuf.Parser<LinkEvent>
-        PARSER = new com.google.protobuf.AbstractParser<LinkEvent>() {
-      @java.lang.Override
-      public LinkEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new LinkEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<LinkEvent> parser() {
-      return PARSER;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<LinkEvent> getParserForType() {
-      return PARSER;
-    }
+        @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 context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (locationCase_ == 1) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_);
+            }
+            if (locationCase_ == 2) {
+                output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-  }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (locationCase_ == 1) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_);
+            }
+            if (locationCase_ == 2) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-  public interface ServiceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceId)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Location)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Location other = (context.ContextOuterClass.Location) obj;
+            if (!getLocationCase().equals(other.getLocationCase()))
+                return false;
+            switch(locationCase_) {
+                case 1:
+                    if (!getRegion().equals(other.getRegion()))
+                        return false;
+                    break;
+                case 2:
+                    if (!getGpsPosition().equals(other.getGpsPosition()))
+                        return false;
+                    break;
+                case 0:
+                default:
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            switch(locationCase_) {
+                case 1:
+                    hash = (37 * hash) + REGION_FIELD_NUMBER;
+                    hash = (53 * hash) + getRegion().hashCode();
+                    break;
+                case 2:
+                    hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER;
+                    hash = (53 * hash) + getGpsPosition().hashCode();
+                    break;
+                case 0:
+                default:
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return Whether the serviceUuid field is set.
-     */
-    boolean hasServiceUuid();
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return The serviceUuid.
-     */
-    context.ContextOuterClass.Uuid getServiceUuid();
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Service -------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.ServiceId}
-   */
-  public static final class ServiceId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceId)
-      ServiceIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceId.newBuilder() to construct.
-    private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceId() {
-    }
+        public static context.ContextOuterClass.Location parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceId();
-    }
+        public static context.ContextOuterClass.Location parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (serviceUuid_ != null) {
-                subBuilder = serviceUuid_.toBuilder();
-              }
-              serviceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceUuid_);
-                serviceUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
-    }
+        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
-    }
+        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+        public static context.ContextOuterClass.Location parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int SERVICE_UUID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Uuid serviceUuid_;
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return Whether the serviceUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceUuid() {
-      return serviceUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     * @return The serviceUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getServiceUuid() {
-      return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
-    }
-    /**
-     * <code>.context.Uuid service_uuid = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-      return getServiceUuid();
-    }
+        public static context.ContextOuterClass.Location parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (serviceUuid_ != null) {
-        output.writeMessage(2, getServiceUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (serviceUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getServiceUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (hasServiceUuid() != other.hasServiceUuid()) return false;
-      if (hasServiceUuid()) {
-        if (!getServiceUuid()
-            .equals(other.getServiceUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      if (hasServiceUuid()) {
-        hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Service -------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.ServiceId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceId)
-        context.ContextOuterClass.ServiceIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = null;
-        } else {
-          serviceUuid_ = null;
-          serviceUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceId build() {
-        context.ContextOuterClass.ServiceId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceId buildPartial() {
-        context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        if (serviceUuidBuilder_ == null) {
-          result.serviceUuid_ = serviceUuid_;
-        } else {
-          result.serviceUuid_ = serviceUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceId) {
-          return mergeFrom((context.ContextOuterClass.ServiceId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceId other) {
-        if (other == context.ContextOuterClass.ServiceId.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (other.hasServiceUuid()) {
-          mergeServiceUuid(other.getServiceUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Uuid serviceUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       * @return Whether the serviceUuid field is set.
-       */
-      public boolean hasServiceUuid() {
-        return serviceUuidBuilder_ != null || serviceUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       * @return The serviceUuid.
-       */
-      public context.ContextOuterClass.Uuid getServiceUuid() {
-        if (serviceUuidBuilder_ == null) {
-          return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
-        } else {
-          return serviceUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
-        if (serviceUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceUuid_ = value;
-          onChanged();
-        } else {
-          serviceUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public Builder setServiceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
-        if (serviceUuidBuilder_ == null) {
-          if (serviceUuid_ != null) {
-            serviceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(serviceUuid_).mergeFrom(value).buildPartial();
-          } else {
-            serviceUuid_ = value;
-          }
-          onChanged();
-        } else {
-          serviceUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public Builder clearServiceUuid() {
-        if (serviceUuidBuilder_ == null) {
-          serviceUuid_ = null;
-          onChanged();
-        } else {
-          serviceUuid_ = null;
-          serviceUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
-        
-        onChanged();
-        return getServiceUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
-        if (serviceUuidBuilder_ != null) {
-          return serviceUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid service_uuid = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getServiceUuidFieldBuilder() {
-        if (serviceUuidBuilder_ == null) {
-          serviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getServiceUuid(),
-                  getParentForChildren(),
-                  isClean());
-          serviceUuid_ = null;
-        }
-        return serviceUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceId)
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Location prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceId)
-    private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static context.ContextOuterClass.ServiceId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    private static final com.google.protobuf.Parser<ServiceId>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceId>() {
-      @java.lang.Override
-      public ServiceId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceId> parser() {
-      return PARSER;
-    }
+        /**
+         * Protobuf type {@code context.Location}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Location)
+        context.ContextOuterClass.LocationOrBuilder {
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceId> getParserForType() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Location_descriptor;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
+            }
 
-  }
+            // Construct using context.ContextOuterClass.Location.newBuilder()
+            private Builder() {
+            }
 
-  public interface ServiceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Service)
-      com.google.protobuf.MessageOrBuilder {
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     * @return Whether the serviceId field is set.
-     */
-    boolean hasServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     * @return The serviceId.
-     */
-    context.ContextOuterClass.ServiceId getServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (gpsPositionBuilder_ != null) {
+                    gpsPositionBuilder_.clear();
+                }
+                locationCase_ = 0;
+                location_ = null;
+                return this;
+            }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Location_descriptor;
+            }
 
-    /**
-     * <code>.context.ServiceTypeEnum service_type = 3;</code>
-     * @return The enum numeric value on the wire for serviceType.
-     */
-    int getServiceTypeValue();
-    /**
-     * <code>.context.ServiceTypeEnum service_type = 3;</code>
-     * @return The serviceType.
-     */
-    context.ContextOuterClass.ServiceTypeEnum getServiceType();
+            @java.lang.Override
+            public context.ContextOuterClass.Location getDefaultInstanceForType() {
+                return context.ContextOuterClass.Location.getDefaultInstance();
+            }
 
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getServiceEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    context.ContextOuterClass.EndPointId getServiceEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    int getServiceEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getServiceEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
-        int index);
+            @java.lang.Override
+            public context.ContextOuterClass.Location build() {
+                context.ContextOuterClass.Location result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    java.util.List<context.ContextOuterClass.Constraint> 
-        getServiceConstraintsList();
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    context.ContextOuterClass.Constraint getServiceConstraints(int index);
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    int getServiceConstraintsCount();
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-        getServiceConstraintsOrBuilderList();
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
-        int index);
+            @java.lang.Override
+            public context.ContextOuterClass.Location buildPartial() {
+                context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
 
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     * @return Whether the serviceStatus field is set.
-     */
-    boolean hasServiceStatus();
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     * @return The serviceStatus.
-     */
-    context.ContextOuterClass.ServiceStatus getServiceStatus();
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     */
-    context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder();
+            private void buildPartial0(context.ContextOuterClass.Location result) {
+                int from_bitField0_ = bitField0_;
+            }
 
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     * @return Whether the serviceConfig field is set.
-     */
-    boolean hasServiceConfig();
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     * @return The serviceConfig.
-     */
-    context.ContextOuterClass.ServiceConfig getServiceConfig();
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     */
-    context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder();
+            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
+                result.locationCase_ = locationCase_;
+                result.location_ = this.location_;
+                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
+                    result.location_ = gpsPositionBuilder_.build();
+                }
+            }
 
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Service}
-   */
-  public static final class Service extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Service)
-      ServiceOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Service.newBuilder() to construct.
-    private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Service() {
-      name_ = "";
-      serviceType_ = 0;
-      serviceEndpointIds_ = java.util.Collections.emptyList();
-      serviceConstraints_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Location) {
+                    return mergeFrom((context.ContextOuterClass.Location) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Service();
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Location other) {
+                if (other == context.ContextOuterClass.Location.getDefaultInstance())
+                    return this;
+                switch(other.getLocationCase()) {
+                    case REGION:
+                        {
+                            locationCase_ = 1;
+                            location_ = other.location_;
+                            onChanged();
+                            break;
+                        }
+                    case GPS_POSITION:
+                        {
+                            mergeGpsPosition(other.getGpsPosition());
+                            break;
+                        }
+                    case LOCATION_NOT_SET:
+                        {
+                            break;
+                        }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Service(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 24: {
-              int rawValue = input.readEnum();
-
-              serviceType_ = rawValue;
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              serviceEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              serviceConstraints_.add(
-                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.ServiceStatus.Builder subBuilder = null;
-              if (serviceStatus_ != null) {
-                subBuilder = serviceStatus_.toBuilder();
-              }
-              serviceStatus_ = input.readMessage(context.ContextOuterClass.ServiceStatus.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceStatus_);
-                serviceStatus_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.ServiceConfig.Builder subBuilder = null;
-              if (serviceConfig_ != null) {
-                subBuilder = serviceConfig_.toBuilder();
-              }
-              serviceConfig_ = input.readMessage(context.ContextOuterClass.ServiceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceConfig_);
-                serviceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Service_descriptor;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
-    }
+            @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:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    locationCase_ = 1;
+                                    location_ = s;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
+                                    locationCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ServiceId serviceId_;
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     * @return Whether the serviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     * @return The serviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
-    }
+            private int locationCase_ = 0;
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+            private java.lang.Object location_;
 
-    public static final int SERVICE_TYPE_FIELD_NUMBER = 3;
-    private int serviceType_;
-    /**
-     * <code>.context.ServiceTypeEnum service_type = 3;</code>
-     * @return The enum numeric value on the wire for serviceType.
-     */
-    @java.lang.Override public int getServiceTypeValue() {
-      return serviceType_;
-    }
-    /**
-     * <code>.context.ServiceTypeEnum service_type = 3;</code>
-     * @return The serviceType.
-     */
-    @java.lang.Override public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
-      return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
-    }
+            public LocationCase getLocationCase() {
+                return LocationCase.forNumber(locationCase_);
+            }
 
-    public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
-      return serviceEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getServiceEndpointIdsOrBuilderList() {
-      return serviceEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    @java.lang.Override
-    public int getServiceEndpointIdsCount() {
-      return serviceEndpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
-      return serviceEndpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
-        int index) {
-      return serviceEndpointIds_.get(index);
-    }
+            public Builder clearLocation() {
+                locationCase_ = 0;
+                location_ = null;
+                onChanged();
+                return this;
+            }
 
-    public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;
-    private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
-      return serviceConstraints_;
-    }
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-        getServiceConstraintsOrBuilderList() {
-      return serviceConstraints_;
-    }
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    @java.lang.Override
-    public int getServiceConstraintsCount() {
-      return serviceConstraints_.size();
-    }
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
-      return serviceConstraints_.get(index);
-    }
-    /**
-     * <code>repeated .context.Constraint service_constraints = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
-        int index) {
-      return serviceConstraints_.get(index);
-    }
+            private int bitField0_;
 
-    public static final int SERVICE_STATUS_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.ServiceStatus serviceStatus_;
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     * @return Whether the serviceStatus field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceStatus() {
-      return serviceStatus_ != null;
-    }
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     * @return The serviceStatus.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceStatus getServiceStatus() {
-      return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
-    }
-    /**
-     * <code>.context.ServiceStatus service_status = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-      return getServiceStatus();
-    }
+            /**
+             * <code>string region = 1;</code>
+             * @return Whether the region field is set.
+             */
+            @java.lang.Override
+            public boolean hasRegion() {
+                return locationCase_ == 1;
+            }
 
-    public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;
-    private context.ContextOuterClass.ServiceConfig serviceConfig_;
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     * @return Whether the serviceConfig field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceConfig() {
-      return serviceConfig_ != null;
-    }
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     * @return The serviceConfig.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceConfig getServiceConfig() {
-      return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
-    }
-    /**
-     * <code>.context.ServiceConfig service_config = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-      return getServiceConfig();
-    }
+            /**
+             * <code>string region = 1;</code>
+             * @return The region.
+             */
+            @java.lang.Override
+            public java.lang.String getRegion() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 1) {
+                    ref = location_;
+                }
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    if (locationCase_ == 1) {
+                        location_ = s;
+                    }
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 8;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+            /**
+             * <code>string region = 1;</code>
+             * @return The bytes for region.
+             */
+            @java.lang.Override
+            public com.google.protobuf.ByteString getRegionBytes() {
+                java.lang.Object ref = "";
+                if (locationCase_ == 1) {
+                    ref = location_;
+                }
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    if (locationCase_ == 1) {
+                        location_ = b;
+                    }
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>string region = 1;</code>
+             * @param value The region to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRegion(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                locationCase_ = 1;
+                location_ = value;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>string region = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearRegion() {
+                if (locationCase_ == 1) {
+                    locationCase_ = 0;
+                    location_ = null;
+                    onChanged();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (serviceId_ != null) {
-        output.writeMessage(1, getServiceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
-        output.writeEnum(3, serviceType_);
-      }
-      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
-        output.writeMessage(4, serviceEndpointIds_.get(i));
-      }
-      for (int i = 0; i < serviceConstraints_.size(); i++) {
-        output.writeMessage(5, serviceConstraints_.get(i));
-      }
-      if (serviceStatus_ != null) {
-        output.writeMessage(6, getServiceStatus());
-      }
-      if (serviceConfig_ != null) {
-        output.writeMessage(7, getServiceConfig());
-      }
-      if (timestamp_ != null) {
-        output.writeMessage(8, getTimestamp());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>string region = 1;</code>
+             * @param value The bytes for region to set.
+             * @return This builder for chaining.
+             */
+            public Builder setRegionBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                locationCase_ = 1;
+                location_ = value;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getServiceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(3, serviceType_);
-      }
-      for (int i = 0; i < serviceEndpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, serviceEndpointIds_.get(i));
-      }
-      for (int i = 0; i < serviceConstraints_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, serviceConstraints_.get(i));
-      }
-      if (serviceStatus_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getServiceStatus());
-      }
-      if (serviceConfig_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, getServiceConfig());
-      }
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, getTimestamp());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> gpsPositionBuilder_;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Service)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;
-
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (serviceType_ != other.serviceType_) return false;
-      if (!getServiceEndpointIdsList()
-          .equals(other.getServiceEndpointIdsList())) return false;
-      if (!getServiceConstraintsList()
-          .equals(other.getServiceConstraintsList())) return false;
-      if (hasServiceStatus() != other.hasServiceStatus()) return false;
-      if (hasServiceStatus()) {
-        if (!getServiceStatus()
-            .equals(other.getServiceStatus())) return false;
-      }
-      if (hasServiceConfig() != other.hasServiceConfig()) return false;
-      if (hasServiceConfig()) {
-        if (!getServiceConfig()
-            .equals(other.getServiceConfig())) return false;
-      }
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             * @return Whether the gpsPosition field is set.
+             */
+            @java.lang.Override
+            public boolean hasGpsPosition() {
+                return locationCase_ == 2;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      hash = (37 * hash) + SERVICE_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + serviceType_;
-      if (getServiceEndpointIdsCount() > 0) {
-        hash = (37 * hash) + SERVICE_ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceEndpointIdsList().hashCode();
-      }
-      if (getServiceConstraintsCount() > 0) {
-        hash = (37 * hash) + SERVICE_CONSTRAINTS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceConstraintsList().hashCode();
-      }
-      if (hasServiceStatus()) {
-        hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceStatus().hashCode();
-      }
-      if (hasServiceConfig()) {
-        hash = (37 * hash) + SERVICE_CONFIG_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceConfig().hashCode();
-      }
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             * @return The gpsPosition.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.GPS_Position getGpsPosition() {
+                if (gpsPositionBuilder_ == null) {
+                    if (locationCase_ == 2) {
+                        return (context.ContextOuterClass.GPS_Position) location_;
+                    }
+                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+                } else {
+                    if (locationCase_ == 2) {
+                        return gpsPositionBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+                }
+            }
 
-    public static context.ContextOuterClass.Service parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Service parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Service parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Service parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            public Builder setGpsPosition(context.ContextOuterClass.GPS_Position value) {
+                if (gpsPositionBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    location_ = value;
+                    onChanged();
+                } else {
+                    gpsPositionBuilder_.setMessage(value);
+                }
+                locationCase_ = 2;
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            public Builder setGpsPosition(context.ContextOuterClass.GPS_Position.Builder builderForValue) {
+                if (gpsPositionBuilder_ == null) {
+                    location_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    gpsPositionBuilder_.setMessage(builderForValue.build());
+                }
+                locationCase_ = 2;
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Service}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Service)
-        context.ContextOuterClass.ServiceOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Service_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Service.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getServiceEndpointIdsFieldBuilder();
-          getServiceConstraintsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        serviceType_ = 0;
-
-        if (serviceEndpointIdsBuilder_ == null) {
-          serviceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          serviceEndpointIdsBuilder_.clear();
-        }
-        if (serviceConstraintsBuilder_ == null) {
-          serviceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          serviceConstraintsBuilder_.clear();
-        }
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = null;
-        } else {
-          serviceStatus_ = null;
-          serviceStatusBuilder_ = null;
-        }
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = null;
-        } else {
-          serviceConfig_ = null;
-          serviceConfigBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Service_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Service getDefaultInstanceForType() {
-        return context.ContextOuterClass.Service.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Service build() {
-        context.ContextOuterClass.Service result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Service buildPartial() {
-        context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
-        int from_bitField0_ = bitField0_;
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.serviceType_ = serviceType_;
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.serviceEndpointIds_ = serviceEndpointIds_;
-        } else {
-          result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
-        }
-        if (serviceConstraintsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.serviceConstraints_ = serviceConstraints_;
-        } else {
-          result.serviceConstraints_ = serviceConstraintsBuilder_.build();
-        }
-        if (serviceStatusBuilder_ == null) {
-          result.serviceStatus_ = serviceStatus_;
-        } else {
-          result.serviceStatus_ = serviceStatusBuilder_.build();
-        }
-        if (serviceConfigBuilder_ == null) {
-          result.serviceConfig_ = serviceConfig_;
-        } else {
-          result.serviceConfig_ = serviceConfigBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Service) {
-          return mergeFrom((context.ContextOuterClass.Service)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Service other) {
-        if (other == context.ContextOuterClass.Service.getDefaultInstance()) return this;
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.serviceType_ != 0) {
-          setServiceTypeValue(other.getServiceTypeValue());
-        }
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (!other.serviceEndpointIds_.isEmpty()) {
-            if (serviceEndpointIds_.isEmpty()) {
-              serviceEndpointIds_ = other.serviceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureServiceEndpointIdsIsMutable();
-              serviceEndpointIds_.addAll(other.serviceEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceEndpointIds_.isEmpty()) {
-            if (serviceEndpointIdsBuilder_.isEmpty()) {
-              serviceEndpointIdsBuilder_.dispose();
-              serviceEndpointIdsBuilder_ = null;
-              serviceEndpointIds_ = other.serviceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              serviceEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getServiceEndpointIdsFieldBuilder() : null;
-            } else {
-              serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            public Builder mergeGpsPosition(context.ContextOuterClass.GPS_Position value) {
+                if (gpsPositionBuilder_ == null) {
+                    if (locationCase_ == 2 && location_ != context.ContextOuterClass.GPS_Position.getDefaultInstance()) {
+                        location_ = context.ContextOuterClass.GPS_Position.newBuilder((context.ContextOuterClass.GPS_Position) location_).mergeFrom(value).buildPartial();
+                    } else {
+                        location_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (locationCase_ == 2) {
+                        gpsPositionBuilder_.mergeFrom(value);
+                    } else {
+                        gpsPositionBuilder_.setMessage(value);
+                    }
+                }
+                locationCase_ = 2;
+                return this;
             }
-          }
-        }
-        if (serviceConstraintsBuilder_ == null) {
-          if (!other.serviceConstraints_.isEmpty()) {
-            if (serviceConstraints_.isEmpty()) {
-              serviceConstraints_ = other.serviceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureServiceConstraintsIsMutable();
-              serviceConstraints_.addAll(other.serviceConstraints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceConstraints_.isEmpty()) {
-            if (serviceConstraintsBuilder_.isEmpty()) {
-              serviceConstraintsBuilder_.dispose();
-              serviceConstraintsBuilder_ = null;
-              serviceConstraints_ = other.serviceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              serviceConstraintsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getServiceConstraintsFieldBuilder() : null;
-            } else {
-              serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
-            }
-          }
-        }
-        if (other.hasServiceStatus()) {
-          mergeServiceStatus(other.getServiceStatus());
-        }
-        if (other.hasServiceConfig()) {
-          mergeServiceConfig(other.getServiceConfig());
-        }
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Service parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int serviceType_ = 0;
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @return The enum numeric value on the wire for serviceType.
-       */
-      @java.lang.Override public int getServiceTypeValue() {
-        return serviceType_;
-      }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @param value The enum numeric value on the wire for serviceType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setServiceTypeValue(int value) {
-        
-        serviceType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @return The serviceType.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
-        return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @param value The serviceType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setServiceType(context.ContextOuterClass.ServiceTypeEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        serviceType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ServiceTypeEnum service_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearServiceType() {
-        
-        serviceType_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> serviceEndpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(serviceEndpointIds_);
-        } else {
-          return serviceEndpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public int getServiceEndpointIdsCount() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return serviceEndpointIds_.size();
-        } else {
-          return serviceEndpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return serviceEndpointIds_.get(index);
-        } else {
-          return serviceEndpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder setServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.set(index, value);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder setServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(value);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder addServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(index, value);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder addServiceEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder addServiceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder addAllServiceEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, serviceEndpointIds_);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder clearServiceEndpointIds() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          serviceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public Builder removeServiceEndpointIds(int index) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          ensureServiceEndpointIdsIsMutable();
-          serviceEndpointIds_.remove(index);
-          onChanged();
-        } else {
-          serviceEndpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(
-          int index) {
-        return getServiceEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(
-          int index) {
-        if (serviceEndpointIdsBuilder_ == null) {
-          return serviceEndpointIds_.get(index);  } else {
-          return serviceEndpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getServiceEndpointIdsOrBuilderList() {
-        if (serviceEndpointIdsBuilder_ != null) {
-          return serviceEndpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(serviceEndpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
-        return getServiceEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder(
-          int index) {
-        return getServiceEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getServiceEndpointIdsBuilderList() {
-        return getServiceEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getServiceEndpointIdsFieldBuilder() {
-        if (serviceEndpointIdsBuilder_ == null) {
-          serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  serviceEndpointIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceEndpointIds_ = null;
-        }
-        return serviceEndpointIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceConstraintsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;
-
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
-        if (serviceConstraintsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(serviceConstraints_);
-        } else {
-          return serviceConstraintsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public int getServiceConstraintsCount() {
-        if (serviceConstraintsBuilder_ == null) {
-          return serviceConstraints_.size();
-        } else {
-          return serviceConstraintsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
-        if (serviceConstraintsBuilder_ == null) {
-          return serviceConstraints_.get(index);
-        } else {
-          return serviceConstraintsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder setServiceConstraints(
-          int index, context.ContextOuterClass.Constraint value) {
-        if (serviceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.set(index, value);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder setServiceConstraints(
-          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (serviceConstraintsBuilder_ == null) {
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder addServiceConstraints(context.ContextOuterClass.Constraint value) {
-        if (serviceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.add(value);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder addServiceConstraints(
-          int index, context.ContextOuterClass.Constraint value) {
-        if (serviceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.add(index, value);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder addServiceConstraints(
-          context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (serviceConstraintsBuilder_ == null) {
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.add(builderForValue.build());
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder addServiceConstraints(
-          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (serviceConstraintsBuilder_ == null) {
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder addAllServiceConstraints(
-          java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
-        if (serviceConstraintsBuilder_ == null) {
-          ensureServiceConstraintsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, serviceConstraints_);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder clearServiceConstraints() {
-        if (serviceConstraintsBuilder_ == null) {
-          serviceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public Builder removeServiceConstraints(int index) {
-        if (serviceConstraintsBuilder_ == null) {
-          ensureServiceConstraintsIsMutable();
-          serviceConstraints_.remove(index);
-          onChanged();
-        } else {
-          serviceConstraintsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(
-          int index) {
-        return getServiceConstraintsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
-          int index) {
-        if (serviceConstraintsBuilder_ == null) {
-          return serviceConstraints_.get(index);  } else {
-          return serviceConstraintsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-           getServiceConstraintsOrBuilderList() {
-        if (serviceConstraintsBuilder_ != null) {
-          return serviceConstraintsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(serviceConstraints_);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
-        return getServiceConstraintsFieldBuilder().addBuilder(
-            context.ContextOuterClass.Constraint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(
-          int index) {
-        return getServiceConstraintsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Constraint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Constraint service_constraints = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
-           getServiceConstraintsBuilderList() {
-        return getServiceConstraintsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> 
-          getServiceConstraintsFieldBuilder() {
-        if (serviceConstraintsBuilder_ == null) {
-          serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(
-                  serviceConstraints_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceConstraints_ = null;
-        }
-        return serviceConstraintsBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceStatus serviceStatus_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> serviceStatusBuilder_;
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       * @return Whether the serviceStatus field is set.
-       */
-      public boolean hasServiceStatus() {
-        return serviceStatusBuilder_ != null || serviceStatus_ != null;
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       * @return The serviceStatus.
-       */
-      public context.ContextOuterClass.ServiceStatus getServiceStatus() {
-        if (serviceStatusBuilder_ == null) {
-          return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
-        } else {
-          return serviceStatusBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
-        if (serviceStatusBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceStatus_ = value;
-          onChanged();
-        } else {
-          serviceStatusBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public Builder setServiceStatus(
-          context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceStatusBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
-        if (serviceStatusBuilder_ == null) {
-          if (serviceStatus_ != null) {
-            serviceStatus_ =
-              context.ContextOuterClass.ServiceStatus.newBuilder(serviceStatus_).mergeFrom(value).buildPartial();
-          } else {
-            serviceStatus_ = value;
-          }
-          onChanged();
-        } else {
-          serviceStatusBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public Builder clearServiceStatus() {
-        if (serviceStatusBuilder_ == null) {
-          serviceStatus_ = null;
-          onChanged();
-        } else {
-          serviceStatus_ = null;
-          serviceStatusBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
-        
-        onChanged();
-        return getServiceStatusFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
-        if (serviceStatusBuilder_ != null) {
-          return serviceStatusBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceStatus_ == null ?
-              context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
-        }
-      }
-      /**
-       * <code>.context.ServiceStatus service_status = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> 
-          getServiceStatusFieldBuilder() {
-        if (serviceStatusBuilder_ == null) {
-          serviceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder>(
-                  getServiceStatus(),
-                  getParentForChildren(),
-                  isClean());
-          serviceStatus_ = null;
-        }
-        return serviceStatusBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceConfig serviceConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> serviceConfigBuilder_;
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       * @return Whether the serviceConfig field is set.
-       */
-      public boolean hasServiceConfig() {
-        return serviceConfigBuilder_ != null || serviceConfig_ != null;
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       * @return The serviceConfig.
-       */
-      public context.ContextOuterClass.ServiceConfig getServiceConfig() {
-        if (serviceConfigBuilder_ == null) {
-          return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
-        } else {
-          return serviceConfigBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
-        if (serviceConfigBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceConfig_ = value;
-          onChanged();
-        } else {
-          serviceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public Builder setServiceConfig(
-          context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
-        if (serviceConfigBuilder_ == null) {
-          if (serviceConfig_ != null) {
-            serviceConfig_ =
-              context.ContextOuterClass.ServiceConfig.newBuilder(serviceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            serviceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          serviceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public Builder clearServiceConfig() {
-        if (serviceConfigBuilder_ == null) {
-          serviceConfig_ = null;
-          onChanged();
-        } else {
-          serviceConfig_ = null;
-          serviceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
-        
-        onChanged();
-        return getServiceConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
-        if (serviceConfigBuilder_ != null) {
-          return serviceConfigBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceConfig_ == null ?
-              context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
-        }
-      }
-      /**
-       * <code>.context.ServiceConfig service_config = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> 
-          getServiceConfigFieldBuilder() {
-        if (serviceConfigBuilder_ == null) {
-          serviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder>(
-                  getServiceConfig(),
-                  getParentForChildren(),
-                  isClean());
-          serviceConfig_ = null;
-        }
-        return serviceConfigBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 8;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Service)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.Service)
-    private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            public Builder clearGpsPosition() {
+                if (gpsPositionBuilder_ == null) {
+                    if (locationCase_ == 2) {
+                        locationCase_ = 0;
+                        location_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (locationCase_ == 2) {
+                        locationCase_ = 0;
+                        location_ = null;
+                    }
+                    gpsPositionBuilder_.clear();
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.Service getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            public context.ContextOuterClass.GPS_Position.Builder getGpsPositionBuilder() {
+                return getGpsPositionFieldBuilder().getBuilder();
+            }
 
-    private static final com.google.protobuf.Parser<Service>
-        PARSER = new com.google.protobuf.AbstractParser<Service>() {
-      @java.lang.Override
-      public Service parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Service(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Service> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
+                if ((locationCase_ == 2) && (gpsPositionBuilder_ != null)) {
+                    return gpsPositionBuilder_.getMessageOrBuilder();
+                } else {
+                    if (locationCase_ == 2) {
+                        return (context.ContextOuterClass.GPS_Position) location_;
+                    }
+                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Service> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.GPS_Position gps_position = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> getGpsPositionFieldBuilder() {
+                if (gpsPositionBuilder_ == null) {
+                    if (!(locationCase_ == 2)) {
+                        location_ = context.ContextOuterClass.GPS_Position.getDefaultInstance();
+                    }
+                    gpsPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder>((context.ContextOuterClass.GPS_Position) location_, getParentForChildren(), isClean());
+                    location_ = null;
+                }
+                locationCase_ = 2;
+                onChanged();
+                return gpsPositionBuilder_;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Service getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Location)
+        }
 
-  public interface ServiceStatusOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
-      com.google.protobuf.MessageOrBuilder {
+        // @@protoc_insertion_point(class_scope:context.Location)
+        private static final context.ContextOuterClass.Location DEFAULT_INSTANCE;
 
-    /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The enum numeric value on the wire for serviceStatus.
-     */
-    int getServiceStatusValue();
-    /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The serviceStatus.
-     */
-    context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
-  }
-  /**
-   * Protobuf type {@code context.ServiceStatus}
-   */
-  public static final class ServiceStatus extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceStatus)
-      ServiceStatusOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceStatus.newBuilder() to construct.
-    private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceStatus() {
-      serviceStatus_ = 0;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Location();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceStatus();
-    }
+        public static context.ContextOuterClass.Location getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceStatus(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              serviceStatus_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
-    }
+        private static final com.google.protobuf.Parser<Location> PARSER = new com.google.protobuf.AbstractParser<Location>() {
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
-    }
+            @java.lang.Override
+            public Location 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 final int SERVICE_STATUS_FIELD_NUMBER = 1;
-    private int serviceStatus_;
-    /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The enum numeric value on the wire for serviceStatus.
-     */
-    @java.lang.Override public int getServiceStatusValue() {
-      return serviceStatus_;
-    }
-    /**
-     * <code>.context.ServiceStatusEnum service_status = 1;</code>
-     * @return The serviceStatus.
-     */
-    @java.lang.Override public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
-      return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
-    }
+        public static com.google.protobuf.Parser<Location> parser() {
+            return PARSER;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public com.google.protobuf.Parser<Location> getParserForType() {
+            return PARSER;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
+        @java.lang.Override
+        public context.ContextOuterClass.Location getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
-        output.writeEnum(1, serviceStatus_);
-      }
-      unknownFields.writeTo(output);
-    }
+    public interface Constraint_EndPointLocationOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointLocation)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, serviceStatus_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceStatus)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
-
-      if (serviceStatus_ != other.serviceStatus_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
-      hash = (53 * hash) + serviceStatus_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
 
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceStatus parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.Location location = 2;</code>
+         * @return Whether the location field is set.
+         */
+        boolean hasLocation();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>.context.Location location = 2;</code>
+         * @return The location.
+         */
+        context.ContextOuterClass.Location getLocation();
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
+        /**
+         * <code>.context.Location location = 2;</code>
+         */
+        context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder();
     }
+
     /**
-     * Protobuf type {@code context.ServiceStatus}
+     * Protobuf type {@code context.Constraint_EndPointLocation}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceStatus)
-        context.ContextOuterClass.ServiceStatusOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        serviceStatus_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus build() {
-        context.ContextOuterClass.ServiceStatus result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceStatus buildPartial() {
-        context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
-        result.serviceStatus_ = serviceStatus_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceStatus) {
-          return mergeFrom((context.ContextOuterClass.ServiceStatus)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceStatus other) {
-        if (other == context.ContextOuterClass.ServiceStatus.getDefaultInstance()) return this;
-        if (other.serviceStatus_ != 0) {
-          setServiceStatusValue(other.getServiceStatusValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceStatus parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceStatus) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int serviceStatus_ = 0;
-      /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return The enum numeric value on the wire for serviceStatus.
-       */
-      @java.lang.Override public int getServiceStatusValue() {
-        return serviceStatus_;
-      }
-      /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @param value The enum numeric value on the wire for serviceStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setServiceStatusValue(int value) {
-        
-        serviceStatus_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return The serviceStatus.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.valueOf(serviceStatus_);
-        return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @param value The serviceStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        serviceStatus_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ServiceStatusEnum service_status = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearServiceStatus() {
-        
-        serviceStatus_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
-    }
+    public static final class Constraint_EndPointLocation extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_EndPointLocation)
+    Constraint_EndPointLocationOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:context.ServiceStatus)
-    private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
-    }
+        private static final long serialVersionUID = 0L;
 
-    public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        // Use Constraint_EndPointLocation.newBuilder() to construct.
+        private Constraint_EndPointLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    private static final com.google.protobuf.Parser<ServiceStatus>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
-      @java.lang.Override
-      public ServiceStatus parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceStatus(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceStatus> parser() {
-      return PARSER;
-    }
+        private Constraint_EndPointLocation() {
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_EndPointLocation();
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
+        }
 
-  }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
+        }
 
-  public interface ServiceConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ConfigRule> 
-        getConfigRulesList();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    context.ContextOuterClass.ConfigRule getConfigRules(int index);
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    int getConfigRulesCount();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ServiceConfig}
-   */
-  public static final class ServiceConfig extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceConfig)
-      ServiceConfigOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceConfig.newBuilder() to construct.
-    private ServiceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceConfig() {
-      configRules_ = java.util.Collections.emptyList();
-    }
+        private context.ContextOuterClass.EndPointId endpointId_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceConfig();
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceConfig(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
 
-    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public int getConfigRulesCount() {
-      return configRules_.size();
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-      return configRules_.get(index);
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index) {
-      return configRules_.get(index);
-    }
+        public static final int LOCATION_FIELD_NUMBER = 2;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private context.ContextOuterClass.Location location_;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * <code>.context.Location location = 2;</code>
+         * @return Whether the location field is set.
+         */
+        @java.lang.Override
+        public boolean hasLocation() {
+            return location_ != null;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < configRules_.size(); i++) {
-        output.writeMessage(1, configRules_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>.context.Location location = 2;</code>
+         * @return The location.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Location getLocation() {
+            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < configRules_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, configRules_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.Location location = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
+            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
-
-      if (!getConfigRulesList()
-          .equals(other.getConfigRulesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConfigRulesCount() > 0) {
-        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
-        hash = (53 * hash) + getConfigRulesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (endpointId_ != null) {
+                output.writeMessage(1, getEndpointId());
+            }
+            if (location_ != null) {
+                output.writeMessage(2, getLocation());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceConfig 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
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
+            }
+            if (location_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ServiceConfig}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceConfig)
-        context.ContextOuterClass.ServiceConfigOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig build() {
-        context.ContextOuterClass.ServiceConfig result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceConfig buildPartial() {
-        context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
-        int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.configRules_ = configRules_;
-        } else {
-          result.configRules_ = configRulesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceConfig) {
-          return mergeFrom((context.ContextOuterClass.ServiceConfig)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceConfig other) {
-        if (other == context.ContextOuterClass.ServiceConfig.getDefaultInstance()) return this;
-        if (configRulesBuilder_ == null) {
-          if (!other.configRules_.isEmpty()) {
-            if (configRules_.isEmpty()) {
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureConfigRulesIsMutable();
-              configRules_.addAll(other.configRules_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.configRules_.isEmpty()) {
-            if (configRulesBuilder_.isEmpty()) {
-              configRulesBuilder_.dispose();
-              configRulesBuilder_ = null;
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              configRulesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConfigRulesFieldBuilder() : null;
-            } else {
-              configRulesBuilder_.addAllMessages(other.configRules_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
-        java.util.Collections.emptyList();
-      private void ensureConfigRulesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
-
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-        if (configRulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(configRules_);
-        } else {
-          return configRulesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public int getConfigRulesCount() {
-        if (configRulesBuilder_ == null) {
-          return configRules_.size();
-        } else {
-          return configRulesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);
-        } else {
-          return configRulesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addAllConfigRules(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, configRules_);
-          onChanged();
-        } else {
-          configRulesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder clearConfigRules() {
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder removeConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.remove(index);
-          onChanged();
-        } else {
-          configRulesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-          int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);  } else {
-          return configRulesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-           getConfigRulesOrBuilderList() {
-        if (configRulesBuilder_ != null) {
-          return configRulesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(configRules_);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
-        return getConfigRulesFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
-           getConfigRulesBuilderList() {
-        return getConfigRulesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
-          getConfigRulesFieldBuilder() {
-        if (configRulesBuilder_ == null) {
-          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
-                  configRules_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          configRules_ = null;
-        }
-        return configRulesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceConfig)
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointLocation)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_EndPointLocation other = (context.ContextOuterClass.Constraint_EndPointLocation) obj;
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (hasLocation() != other.hasLocation())
+                return false;
+            if (hasLocation()) {
+                if (!getLocation().equals(other.getLocation()))
+                    return false;
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceConfig)
-    private static final context.ContextOuterClass.ServiceConfig DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfig();
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            if (hasLocation()) {
+                hash = (37 * hash) + LOCATION_FIELD_NUMBER;
+                hash = (53 * hash) + getLocation().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    public static context.ContextOuterClass.ServiceConfig getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    private static final com.google.protobuf.Parser<ServiceConfig>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceConfig>() {
-      @java.lang.Override
-      public ServiceConfig parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceConfig(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceConfig> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceConfig> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  public interface ServiceIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceIdList)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ServiceId> 
-        getServiceIdsList();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    context.ContextOuterClass.ServiceId getServiceIds(int index);
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    int getServiceIdsCount();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ServiceIdList}
-   */
-  public static final class ServiceIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceIdList)
-      ServiceIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceIdList.newBuilder() to construct.
-    private ServiceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceIdList() {
-      serviceIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceIdList();
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              serviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
-      return serviceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getServiceIdsOrBuilderList() {
-      return serviceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getServiceIdsCount() {
-      return serviceIds_.size();
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-      return serviceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ServiceId service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-        int index) {
-      return serviceIds_.get(index);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointLocation prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < serviceIds_.size(); i++) {
-        output.writeMessage(1, serviceIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < serviceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, serviceIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_EndPointLocation}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointLocation)
+        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder {
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
-
-      if (!getServiceIdsList()
-          .equals(other.getServiceIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getServiceIdsCount() > 0) {
-        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
+            }
 
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ServiceIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceIdList)
-        context.ContextOuterClass.ServiceIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getServiceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          serviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList build() {
-        context.ContextOuterClass.ServiceIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceIdList buildPartial() {
-        context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (serviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.serviceIds_ = serviceIds_;
-        } else {
-          result.serviceIds_ = serviceIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceIdList) {
-          return mergeFrom((context.ContextOuterClass.ServiceIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceIdList other) {
-        if (other == context.ContextOuterClass.ServiceIdList.getDefaultInstance()) return this;
-        if (serviceIdsBuilder_ == null) {
-          if (!other.serviceIds_.isEmpty()) {
-            if (serviceIds_.isEmpty()) {
-              serviceIds_ = other.serviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureServiceIdsIsMutable();
-              serviceIds_.addAll(other.serviceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.serviceIds_.isEmpty()) {
-            if (serviceIdsBuilder_.isEmpty()) {
-              serviceIdsBuilder_.dispose();
-              serviceIdsBuilder_ = null;
-              serviceIds_ = other.serviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              serviceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getServiceIdsFieldBuilder() : null;
-            } else {
-              serviceIdsBuilder_.addAllMessages(other.serviceIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
-        if (serviceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(serviceIds_);
-        } else {
-          return serviceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public int getServiceIdsCount() {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.size();
-        } else {
-          return serviceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId getServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);
-        } else {
-          return serviceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder setServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder addServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(index, value);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder addServiceIds(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder addServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder addAllServiceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, serviceIds_);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder clearServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public Builder removeServiceIds(int index) {
-        if (serviceIdsBuilder_ == null) {
-          ensureServiceIdsIsMutable();
-          serviceIds_.remove(index);
-          onChanged();
-        } else {
-          serviceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(
-          int index) {
-        return getServiceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(
-          int index) {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_.get(index);  } else {
-          return serviceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getServiceIdsOrBuilderList() {
-        if (serviceIdsBuilder_ != null) {
-          return serviceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(serviceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
-        return getServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(
-          int index) {
-        return getServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId service_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
-           getServiceIdsBuilderList() {
-        return getServiceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdsFieldBuilder() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  serviceIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          serviceIds_ = null;
-        }
-        return serviceIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceIdList)
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
+                    locationBuilder_ = null;
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceIdList)
-    private static final context.ContextOuterClass.ServiceIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceIdList();
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
+            }
 
-    public static context.ContextOuterClass.ServiceIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+            }
 
-    private static final com.google.protobuf.Parser<ServiceIdList>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceIdList>() {
-      @java.lang.Override
-      public ServiceIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceIdList> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocation build() {
+                context.ContextOuterClass.Constraint_EndPointLocation result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceIdList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
+                context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
+                }
+            }
 
-  }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_EndPointLocation) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-  public interface ServiceListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceList)
-      com.google.protobuf.MessageOrBuilder {
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointLocation other) {
+                if (other == context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance())
+                    return this;
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (other.hasLocation()) {
+                    mergeLocation(other.getLocation());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Service> 
-        getServicesList();
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    context.ContextOuterClass.Service getServices(int index);
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    int getServicesCount();
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-        getServicesOrBuilderList();
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ServiceList}
-   */
-  public static final class ServiceList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceList)
-      ServiceListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceList.newBuilder() to construct.
-    private ServiceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceList() {
-      services_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceList();
-    }
+            @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(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                services_ = new java.util.ArrayList<context.ContextOuterClass.Service>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              services_.add(
-                  input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          services_ = java.util.Collections.unmodifiableList(services_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
-    }
+            private context.ContextOuterClass.EndPointId endpointId_;
 
-    public static final int SERVICES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Service> services_;
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Service> getServicesList() {
-      return services_;
-    }
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-        getServicesOrBuilderList() {
-      return services_;
-    }
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    @java.lang.Override
-    public int getServicesCount() {
-      return services_.size();
-    }
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Service getServices(int index) {
-      return services_.get(index);
-    }
-    /**
-     * <code>repeated .context.Service services = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-        int index) {
-      return services_.get(index);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < services_.size(); i++) {
-        output.writeMessage(1, services_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < services_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, services_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
-
-      if (!getServicesList()
-          .equals(other.getServicesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getServicesCount() > 0) {
-        hash = (37 * hash) + SERVICES_FIELD_NUMBER;
-        hash = (53 * hash) + getServicesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ServiceList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceList)
-        context.ContextOuterClass.ServiceListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getServicesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (servicesBuilder_ == null) {
-          services_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          servicesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceList build() {
-        context.ContextOuterClass.ServiceList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceList buildPartial() {
-        context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
-        int from_bitField0_ = bitField0_;
-        if (servicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            services_ = java.util.Collections.unmodifiableList(services_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.services_ = services_;
-        } else {
-          result.services_ = servicesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceList) {
-          return mergeFrom((context.ContextOuterClass.ServiceList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceList other) {
-        if (other == context.ContextOuterClass.ServiceList.getDefaultInstance()) return this;
-        if (servicesBuilder_ == null) {
-          if (!other.services_.isEmpty()) {
-            if (services_.isEmpty()) {
-              services_ = other.services_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureServicesIsMutable();
-              services_.addAll(other.services_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.services_.isEmpty()) {
-            if (servicesBuilder_.isEmpty()) {
-              servicesBuilder_.dispose();
-              servicesBuilder_ = null;
-              services_ = other.services_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              servicesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getServicesFieldBuilder() : null;
-            } else {
-              servicesBuilder_.addAllMessages(other.services_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Service> services_ =
-        java.util.Collections.emptyList();
-      private void ensureServicesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          services_ = new java.util.ArrayList<context.ContextOuterClass.Service>(services_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;
-
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Service> getServicesList() {
-        if (servicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(services_);
-        } else {
-          return servicesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public int getServicesCount() {
-        if (servicesBuilder_ == null) {
-          return services_.size();
-        } else {
-          return servicesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public context.ContextOuterClass.Service getServices(int index) {
-        if (servicesBuilder_ == null) {
-          return services_.get(index);
-        } else {
-          return servicesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder setServices(
-          int index, context.ContextOuterClass.Service value) {
-        if (servicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServicesIsMutable();
-          services_.set(index, value);
-          onChanged();
-        } else {
-          servicesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder setServices(
-          int index, context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          servicesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder addServices(context.ContextOuterClass.Service value) {
-        if (servicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServicesIsMutable();
-          services_.add(value);
-          onChanged();
-        } else {
-          servicesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder addServices(
-          int index, context.ContextOuterClass.Service value) {
-        if (servicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureServicesIsMutable();
-          services_.add(index, value);
-          onChanged();
-        } else {
-          servicesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder addServices(
-          context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.add(builderForValue.build());
-          onChanged();
-        } else {
-          servicesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder addServices(
-          int index, context.ContextOuterClass.Service.Builder builderForValue) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          servicesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder addAllServices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Service> values) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, services_);
-          onChanged();
-        } else {
-          servicesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder clearServices() {
-        if (servicesBuilder_ == null) {
-          services_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          servicesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public Builder removeServices(int index) {
-        if (servicesBuilder_ == null) {
-          ensureServicesIsMutable();
-          services_.remove(index);
-          onChanged();
-        } else {
-          servicesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public context.ContextOuterClass.Service.Builder getServicesBuilder(
-          int index) {
-        return getServicesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(
-          int index) {
-        if (servicesBuilder_ == null) {
-          return services_.get(index);  } else {
-          return servicesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> 
-           getServicesOrBuilderList() {
-        if (servicesBuilder_ != null) {
-          return servicesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(services_);
-        }
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public context.ContextOuterClass.Service.Builder addServicesBuilder() {
-        return getServicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Service.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public context.ContextOuterClass.Service.Builder addServicesBuilder(
-          int index) {
-        return getServicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Service.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Service services = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Service.Builder> 
-           getServicesBuilderList() {
-        return getServicesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> 
-          getServicesFieldBuilder() {
-        if (servicesBuilder_ == null) {
-          servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder>(
-                  services_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          services_ = null;
-        }
-        return servicesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceList)
-    }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceList)
-    private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
-    }
+            private context.ContextOuterClass.Location location_;
 
-    public static context.ContextOuterClass.ServiceList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> locationBuilder_;
 
-    private static final com.google.protobuf.Parser<ServiceList>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {
-      @java.lang.Override
-      public ServiceList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Location location = 2;</code>
+             * @return Whether the location field is set.
+             */
+            public boolean hasLocation() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Location location = 2;</code>
+             * @return The location.
+             */
+            public context.ContextOuterClass.Location getLocation() {
+                if (locationBuilder_ == null) {
+                    return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+                } else {
+                    return locationBuilder_.getMessage();
+                }
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public Builder setLocation(context.ContextOuterClass.Location value) {
+                if (locationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    location_ = value;
+                } else {
+                    locationBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-  }
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
+                if (locationBuilder_ == null) {
+                    location_ = builderForValue.build();
+                } else {
+                    locationBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-  public interface ServiceFilterOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceFilter)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public Builder mergeLocation(context.ContextOuterClass.Location value) {
+                if (locationBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
+                        getLocationBuilder().mergeFrom(value);
+                    } else {
+                        location_ = value;
+                    }
+                } else {
+                    locationBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return Whether the serviceIds field is set.
-     */
-    boolean hasServiceIds();
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return The serviceIds.
-     */
-    context.ContextOuterClass.ServiceIdList getServiceIds();
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     */
-    context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder();
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public Builder clearLocation() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                location_ = null;
+                if (locationBuilder_ != null) {
+                    locationBuilder_.dispose();
+                    locationBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
-     */
-    boolean getIncludeEndpointIds();
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public context.ContextOuterClass.Location.Builder getLocationBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getLocationFieldBuilder().getBuilder();
+            }
 
-    /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
-     */
-    boolean getIncludeConstraints();
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
+                if (locationBuilder_ != null) {
+                    return locationBuilder_.getMessageOrBuilder();
+                } else {
+                    return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
+                }
+            }
 
-    /**
-     * <code>bool include_config_rules = 4;</code>
-     * @return The includeConfigRules.
-     */
-    boolean getIncludeConfigRules();
-  }
-  /**
-   * Protobuf type {@code context.ServiceFilter}
-   */
-  public static final class ServiceFilter extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceFilter)
-      ServiceFilterOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceFilter.newBuilder() to construct.
-    private ServiceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceFilter() {
-    }
+            /**
+             * <code>.context.Location location = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> getLocationFieldBuilder() {
+                if (locationBuilder_ == null) {
+                    locationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(getLocation(), getParentForChildren(), isClean());
+                    location_ = null;
+                }
+                return locationBuilder_;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceFilter();
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceFilter(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ServiceIdList.Builder subBuilder = null;
-              if (serviceIds_ != null) {
-                subBuilder = serviceIds_.toBuilder();
-              }
-              serviceIds_ = input.readMessage(context.ContextOuterClass.ServiceIdList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceIds_);
-                serviceIds_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              includeEndpointIds_ = input.readBool();
-              break;
-            }
-            case 24: {
-
-              includeConstraints_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeConfigRules_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointLocation)
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_EndPointLocation)
+        private static final context.ContextOuterClass.Constraint_EndPointLocation DEFAULT_INSTANCE;
 
-    public static final int SERVICE_IDS_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ServiceIdList serviceIds_;
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return Whether the serviceIds field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceIds() {
-      return serviceIds_ != null;
-    }
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     * @return The serviceIds.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdList getServiceIds() {
-      return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
-    }
-    /**
-     * <code>.context.ServiceIdList service_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-      return getServiceIds();
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointLocation();
+        }
 
-    public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
-    private boolean includeEndpointIds_;
-    /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
-     */
-    @java.lang.Override
-    public boolean getIncludeEndpointIds() {
-      return includeEndpointIds_;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
-    private boolean includeConstraints_;
-    /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
-     */
-    @java.lang.Override
-    public boolean getIncludeConstraints() {
-      return includeConstraints_;
-    }
+        private static final com.google.protobuf.Parser<Constraint_EndPointLocation> PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointLocation>() {
 
-    public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;
-    private boolean includeConfigRules_;
-    /**
-     * <code>bool include_config_rules = 4;</code>
-     * @return The includeConfigRules.
-     */
-    @java.lang.Override
-    public boolean getIncludeConfigRules() {
-      return includeConfigRules_;
-    }
+            @java.lang.Override
+            public Constraint_EndPointLocation 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();
+            }
+        };
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static com.google.protobuf.Parser<Constraint_EndPointLocation> parser() {
+            return PARSER;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_EndPointLocation> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (serviceIds_ != null) {
-        output.writeMessage(1, getServiceIds());
-      }
-      if (includeEndpointIds_ != false) {
-        output.writeBool(2, includeEndpointIds_);
-      }
-      if (includeConstraints_ != false) {
-        output.writeBool(3, includeConstraints_);
-      }
-      if (includeConfigRules_ != false) {
-        output.writeBool(4, includeConfigRules_);
-      }
-      unknownFields.writeTo(output);
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (serviceIds_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getServiceIds());
-      }
-      if (includeEndpointIds_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, includeEndpointIds_);
-      }
-      if (includeConstraints_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, includeConstraints_);
-      }
-      if (includeConfigRules_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, includeConfigRules_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    public interface Constraint_EndPointPriorityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointPriority)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceFilter)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceFilter other = (context.ContextOuterClass.ServiceFilter) obj;
-
-      if (hasServiceIds() != other.hasServiceIds()) return false;
-      if (hasServiceIds()) {
-        if (!getServiceIds()
-            .equals(other.getServiceIds())) return false;
-      }
-      if (getIncludeEndpointIds()
-          != other.getIncludeEndpointIds()) return false;
-      if (getIncludeConstraints()
-          != other.getIncludeConstraints()) return false;
-      if (getIncludeConfigRules()
-          != other.getIncludeConfigRules()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasServiceIds()) {
-        hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceIds().hashCode();
-      }
-      hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeEndpointIds());
-      hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeConstraints());
-      hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeConfigRules());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
 
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceFilter prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+        /**
+         * <code>uint32 priority = 2;</code>
+         * @return The priority.
+         */
+        int getPriority();
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
     /**
-     * Protobuf type {@code context.ServiceFilter}
+     * Protobuf type {@code context.Constraint_EndPointPriority}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceFilter)
-        context.ContextOuterClass.ServiceFilterOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = null;
-        } else {
-          serviceIds_ = null;
-          serviceIdsBuilder_ = null;
-        }
-        includeEndpointIds_ = false;
-
-        includeConstraints_ = false;
-
-        includeConfigRules_ = false;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceFilter.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter build() {
-        context.ContextOuterClass.ServiceFilter result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceFilter buildPartial() {
-        context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
-        if (serviceIdsBuilder_ == null) {
-          result.serviceIds_ = serviceIds_;
-        } else {
-          result.serviceIds_ = serviceIdsBuilder_.build();
-        }
-        result.includeEndpointIds_ = includeEndpointIds_;
-        result.includeConstraints_ = includeConstraints_;
-        result.includeConfigRules_ = includeConfigRules_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceFilter) {
-          return mergeFrom((context.ContextOuterClass.ServiceFilter)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceFilter other) {
-        if (other == context.ContextOuterClass.ServiceFilter.getDefaultInstance()) return this;
-        if (other.hasServiceIds()) {
-          mergeServiceIds(other.getServiceIds());
-        }
-        if (other.getIncludeEndpointIds() != false) {
-          setIncludeEndpointIds(other.getIncludeEndpointIds());
-        }
-        if (other.getIncludeConstraints() != false) {
-          setIncludeConstraints(other.getIncludeConstraints());
-        }
-        if (other.getIncludeConfigRules() != false) {
-          setIncludeConfigRules(other.getIncludeConfigRules());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceFilter parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceFilter) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ServiceIdList serviceIds_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       * @return Whether the serviceIds field is set.
-       */
-      public boolean hasServiceIds() {
-        return serviceIdsBuilder_ != null || serviceIds_ != null;
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       * @return The serviceIds.
-       */
-      public context.ContextOuterClass.ServiceIdList getServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
-        } else {
-          return serviceIdsBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public Builder setServiceIds(context.ContextOuterClass.ServiceIdList value) {
-        if (serviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceIds_ = value;
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public Builder setServiceIds(
-          context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
-        if (serviceIdsBuilder_ == null) {
-          if (serviceIds_ != null) {
-            serviceIds_ =
-              context.ContextOuterClass.ServiceIdList.newBuilder(serviceIds_).mergeFrom(value).buildPartial();
-          } else {
-            serviceIds_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public Builder clearServiceIds() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIds_ = null;
-          onChanged();
-        } else {
-          serviceIds_ = null;
-          serviceIdsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
-        
-        onChanged();
-        return getServiceIdsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
-        if (serviceIdsBuilder_ != null) {
-          return serviceIdsBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceIds_ == null ?
-              context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
-        }
-      }
-      /**
-       * <code>.context.ServiceIdList service_ids = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> 
-          getServiceIdsFieldBuilder() {
-        if (serviceIdsBuilder_ == null) {
-          serviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder>(
-                  getServiceIds(),
-                  getParentForChildren(),
-                  isClean());
-          serviceIds_ = null;
-        }
-        return serviceIdsBuilder_;
-      }
-
-      private boolean includeEndpointIds_ ;
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return The includeEndpointIds.
-       */
-      @java.lang.Override
-      public boolean getIncludeEndpointIds() {
-        return includeEndpointIds_;
-      }
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @param value The includeEndpointIds to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeEndpointIds(boolean value) {
-        
-        includeEndpointIds_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeEndpointIds() {
-        
-        includeEndpointIds_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeConstraints_ ;
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @return The includeConstraints.
-       */
-      @java.lang.Override
-      public boolean getIncludeConstraints() {
-        return includeConstraints_;
-      }
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @param value The includeConstraints to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeConstraints(boolean value) {
-        
-        includeConstraints_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConstraints() {
-        
-        includeConstraints_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeConfigRules_ ;
-      /**
-       * <code>bool include_config_rules = 4;</code>
-       * @return The includeConfigRules.
-       */
-      @java.lang.Override
-      public boolean getIncludeConfigRules() {
-        return includeConfigRules_;
-      }
-      /**
-       * <code>bool include_config_rules = 4;</code>
-       * @param value The includeConfigRules to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeConfigRules(boolean value) {
-        
-        includeConfigRules_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_config_rules = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConfigRules() {
-        
-        includeConfigRules_ = false;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceFilter)
-    }
+    public static final class Constraint_EndPointPriority extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_EndPointPriority)
+    Constraint_EndPointPriorityOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:context.ServiceFilter)
-    private static final context.ContextOuterClass.ServiceFilter DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceFilter();
-    }
+        private static final long serialVersionUID = 0L;
 
-    public static context.ContextOuterClass.ServiceFilter getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        // Use Constraint_EndPointPriority.newBuilder() to construct.
+        private Constraint_EndPointPriority(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    private static final com.google.protobuf.Parser<ServiceFilter>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceFilter>() {
-      @java.lang.Override
-      public ServiceFilter parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceFilter(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceFilter> parser() {
-      return PARSER;
-    }
+        private Constraint_EndPointPriority() {
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceFilter> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_EndPointPriority();
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
+        }
 
-  }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
+        }
 
-  public interface ServiceEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ServiceEvent)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+        private context.ContextOuterClass.EndPointId endpointId_;
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
+
+        public static final int PRIORITY_FIELD_NUMBER = 2;
 
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return Whether the serviceId field is set.
-     */
-    boolean hasServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return The serviceId.
-     */
-    context.ContextOuterClass.ServiceId getServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.ServiceEvent}
-   */
-  public static final class ServiceEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ServiceEvent)
-      ServiceEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ServiceEvent.newBuilder() to construct.
-    private ServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ServiceEvent() {
-    }
+        private int priority_ = 0;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ServiceEvent();
-    }
+        /**
+         * <code>uint32 priority = 2;</code>
+         * @return The priority.
+         */
+        @java.lang.Override
+        public int getPriority() {
+            return priority_;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ServiceEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (endpointId_ != null) {
+                output.writeMessage(1, getEndpointId());
+            }
+            if (priority_ != 0) {
+                output.writeUInt32(2, priority_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.ServiceId serviceId_;
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return Whether the serviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return The serviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
+            }
+            if (priority_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointPriority)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_EndPointPriority other = (context.ContextOuterClass.Constraint_EndPointPriority) obj;
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (getPriority() != other.getPriority())
+                return false;
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
+            hash = (53 * hash) + getPriority();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (serviceId_ != null) {
-        output.writeMessage(2, getServiceId());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getServiceId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ServiceEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ServiceEvent other = (context.ContextOuterClass.ServiceEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ServiceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ServiceEvent prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ServiceEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ServiceEvent)
-        context.ContextOuterClass.ServiceEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent build() {
-        context.ContextOuterClass.ServiceEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ServiceEvent buildPartial() {
-        context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ServiceEvent) {
-          return mergeFrom((context.ContextOuterClass.ServiceEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
-        if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ServiceEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ServiceEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ServiceEvent)
-    private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    private static final com.google.protobuf.Parser<ServiceEvent>
-        PARSER = new com.google.protobuf.AbstractParser<ServiceEvent>() {
-      @java.lang.Override
-      public ServiceEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ServiceEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ServiceEvent> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ServiceEvent> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-  public interface SliceIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceId)
-      com.google.protobuf.MessageOrBuilder {
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointPriority prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     * @return Whether the sliceUuid field is set.
-     */
-    boolean hasSliceUuid();
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     * @return The sliceUuid.
-     */
-    context.ContextOuterClass.Uuid getSliceUuid();
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Slice ---------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.SliceId}
-   */
-  public static final class SliceId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceId)
-      SliceIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceId.newBuilder() to construct.
-    private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceId() {
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceId();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (sliceUuid_ != null) {
-                subBuilder = sliceUuid_.toBuilder();
-              }
-              sliceUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceUuid_);
-                sliceUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_EndPointPriority}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointPriority)
+        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder {
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
+            }
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
+            }
 
-    public static final int SLICE_UUID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Uuid sliceUuid_;
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     * @return Whether the sliceUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceUuid() {
-      return sliceUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     * @return The sliceUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getSliceUuid() {
-      return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
-    }
-    /**
-     * <code>.context.Uuid slice_uuid = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-      return getSliceUuid();
-    }
+            // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
+            private Builder() {
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                priority_ = 0;
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (sliceUuid_ != null) {
-        output.writeMessage(2, getSliceUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (sliceUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getSliceUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceId other = (context.ContextOuterClass.SliceId) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (hasSliceUuid() != other.hasSliceUuid()) return false;
-      if (hasSliceUuid()) {
-        if (!getSliceUuid()
-            .equals(other.getSliceUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriority build() {
+                context.ContextOuterClass.Constraint_EndPointPriority result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      if (hasSliceUuid()) {
-        hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
+                context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    public static context.ContextOuterClass.SliceId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.priority_ = priority_;
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceId 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
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_EndPointPriority) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Slice ---------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.SliceId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceId)
-        context.ContextOuterClass.SliceIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = null;
-        } else {
-          sliceUuid_ = null;
-          sliceUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceId build() {
-        context.ContextOuterClass.SliceId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceId buildPartial() {
-        context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        if (sliceUuidBuilder_ == null) {
-          result.sliceUuid_ = sliceUuid_;
-        } else {
-          result.sliceUuid_ = sliceUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceId) {
-          return mergeFrom((context.ContextOuterClass.SliceId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceId other) {
-        if (other == context.ContextOuterClass.SliceId.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (other.hasSliceUuid()) {
-          mergeSliceUuid(other.getSliceUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Uuid sliceUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> sliceUuidBuilder_;
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       * @return Whether the sliceUuid field is set.
-       */
-      public boolean hasSliceUuid() {
-        return sliceUuidBuilder_ != null || sliceUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       * @return The sliceUuid.
-       */
-      public context.ContextOuterClass.Uuid getSliceUuid() {
-        if (sliceUuidBuilder_ == null) {
-          return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
-        } else {
-          return sliceUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder setSliceUuid(context.ContextOuterClass.Uuid value) {
-        if (sliceUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceUuid_ = value;
-          onChanged();
-        } else {
-          sliceUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder setSliceUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
-        if (sliceUuidBuilder_ == null) {
-          if (sliceUuid_ != null) {
-            sliceUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(sliceUuid_).mergeFrom(value).buildPartial();
-          } else {
-            sliceUuid_ = value;
-          }
-          onChanged();
-        } else {
-          sliceUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public Builder clearSliceUuid() {
-        if (sliceUuidBuilder_ == null) {
-          sliceUuid_ = null;
-          onChanged();
-        } else {
-          sliceUuid_ = null;
-          sliceUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
-        
-        onChanged();
-        return getSliceUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
-        if (sliceUuidBuilder_ != null) {
-          return sliceUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid slice_uuid = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getSliceUuidFieldBuilder() {
-        if (sliceUuidBuilder_ == null) {
-          sliceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getSliceUuid(),
-                  getParentForChildren(),
-                  isClean());
-          sliceUuid_ = null;
-        }
-        return sliceUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceId)
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointPriority other) {
+                if (other == context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance())
+                    return this;
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (other.getPriority() != 0) {
+                    setPriority(other.getPriority());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.SliceId)
-    private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    public static context.ContextOuterClass.SliceId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @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(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    priority_ = input.readUInt32();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<SliceId>
-        PARSER = new com.google.protobuf.AbstractParser<SliceId>() {
-      @java.lang.Override
-      public SliceId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceId> parser() {
-      return PARSER;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceId> getParserForType() {
-      return PARSER;
-    }
+            private context.ContextOuterClass.EndPointId endpointId_;
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
 
-  }
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-  public interface SliceOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Slice)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
 
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     * @return Whether the sliceId field is set.
-     */
-    boolean hasSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     * @return The sliceId.
-     */
-    context.ContextOuterClass.SliceId getSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getSliceEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointId getSliceEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    int getSliceEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getSliceEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
-        int index);
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.Constraint> 
-        getSliceConstraintsList();
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    context.ContextOuterClass.Constraint getSliceConstraints(int index);
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    int getSliceConstraintsCount();
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-        getSliceConstraintsOrBuilderList();
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
-        int index);
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    java.util.List<context.ContextOuterClass.ServiceId> 
-        getSliceServiceIdsList();
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    context.ContextOuterClass.ServiceId getSliceServiceIds(int index);
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    int getSliceServiceIdsCount();
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getSliceServiceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
-        int index);
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
 
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    java.util.List<context.ContextOuterClass.SliceId> 
-        getSliceSubsliceIdsList();
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    int getSliceSubsliceIdsCount();
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceSubsliceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
-        int index);
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
 
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     * @return Whether the sliceStatus field is set.
-     */
-    boolean hasSliceStatus();
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     * @return The sliceStatus.
-     */
-    context.ContextOuterClass.SliceStatus getSliceStatus();
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     */
-    context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder();
+            /**
+             * <code>.context.EndPointId endpoint_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
 
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     * @return Whether the sliceConfig field is set.
-     */
-    boolean hasSliceConfig();
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     * @return The sliceConfig.
-     */
-    context.ContextOuterClass.SliceConfig getSliceConfig();
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     */
-    context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder();
+            private int priority_;
 
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     * @return Whether the sliceOwner field is set.
-     */
-    boolean hasSliceOwner();
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     * @return The sliceOwner.
-     */
-    context.ContextOuterClass.SliceOwner getSliceOwner();
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     */
-    context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder();
+            /**
+             * <code>uint32 priority = 2;</code>
+             * @return The priority.
+             */
+            @java.lang.Override
+            public int getPriority() {
+                return priority_;
+            }
 
-    /**
-     * <code>.context.Timestamp timestamp = 10;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 10;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 10;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Slice}
-   */
-  public static final class Slice extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Slice)
-      SliceOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Slice.newBuilder() to construct.
-    private Slice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Slice() {
-      name_ = "";
-      sliceEndpointIds_ = java.util.Collections.emptyList();
-      sliceConstraints_ = java.util.Collections.emptyList();
-      sliceServiceIds_ = java.util.Collections.emptyList();
-      sliceSubsliceIds_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>uint32 priority = 2;</code>
+             * @param value The priority to set.
+             * @return This builder for chaining.
+             */
+            public Builder setPriority(int value) {
+                priority_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Slice();
-    }
+            /**
+             * <code>uint32 priority = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearPriority() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                priority_ = 0;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Slice(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              sliceEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              sliceConstraints_.add(
-                  input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              sliceServiceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-              break;
-            }
-            case 50: {
-              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
-                sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000008;
-              }
-              sliceSubsliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.SliceStatus.Builder subBuilder = null;
-              if (sliceStatus_ != null) {
-                subBuilder = sliceStatus_.toBuilder();
-              }
-              sliceStatus_ = input.readMessage(context.ContextOuterClass.SliceStatus.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceStatus_);
-                sliceStatus_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.SliceConfig.Builder subBuilder = null;
-              if (sliceConfig_ != null) {
-                subBuilder = sliceConfig_.toBuilder();
-              }
-              sliceConfig_ = input.readMessage(context.ContextOuterClass.SliceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceConfig_);
-                sliceConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.SliceOwner.Builder subBuilder = null;
-              if (sliceOwner_ != null) {
-                subBuilder = sliceOwner_.toBuilder();
-              }
-              sliceOwner_ = input.readMessage(context.ContextOuterClass.SliceOwner.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceOwner_);
-                sliceOwner_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 82: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000008) != 0)) {
-          sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Slice_descriptor;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointPriority)
+        }
 
-    public static final int SLICE_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.SliceId sliceId_;
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     * @return Whether the sliceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     * @return The sliceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_EndPointPriority)
+        private static final context.ContextOuterClass.Constraint_EndPointPriority DEFAULT_INSTANCE;
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointPriority();
+        }
 
-    public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
-      return sliceEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getSliceEndpointIdsOrBuilderList() {
-      return sliceEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getSliceEndpointIdsCount() {
-      return sliceEndpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
-      return sliceEndpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
-        int index) {
-      return sliceEndpointIds_.get(index);
-    }
+        public static context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
-      return sliceConstraints_;
-    }
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-        getSliceConstraintsOrBuilderList() {
-      return sliceConstraints_;
-    }
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    @java.lang.Override
-    public int getSliceConstraintsCount() {
-      return sliceConstraints_.size();
-    }
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
-      return sliceConstraints_.get(index);
-    }
-    /**
-     * <code>repeated .context.Constraint slice_constraints = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
-        int index) {
-      return sliceConstraints_.get(index);
-    }
+        private static final com.google.protobuf.Parser<Constraint_EndPointPriority> PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointPriority>() {
 
-    public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;
-    private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
-      return sliceServiceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getSliceServiceIdsOrBuilderList() {
-      return sliceServiceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    @java.lang.Override
-    public int getSliceServiceIdsCount() {
-      return sliceServiceIds_.size();
-    }
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
-      return sliceServiceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
-        int index) {
-      return sliceServiceIds_.get(index);
-    }
+            @java.lang.Override
+            public Constraint_EndPointPriority 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 final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;
-    private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
-      return sliceSubsliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceSubsliceIdsOrBuilderList() {
-      return sliceSubsliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    @java.lang.Override
-    public int getSliceSubsliceIdsCount() {
-      return sliceSubsliceIds_.size();
-    }
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
-      return sliceSubsliceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
-        int index) {
-      return sliceSubsliceIds_.get(index);
-    }
+        public static com.google.protobuf.Parser<Constraint_EndPointPriority> parser() {
+            return PARSER;
+        }
 
-    public static final int SLICE_STATUS_FIELD_NUMBER = 7;
-    private context.ContextOuterClass.SliceStatus sliceStatus_;
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     * @return Whether the sliceStatus field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceStatus() {
-      return sliceStatus_ != null;
-    }
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     * @return The sliceStatus.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceStatus getSliceStatus() {
-      return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
-    }
-    /**
-     * <code>.context.SliceStatus slice_status = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-      return getSliceStatus();
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_EndPointPriority> getParserForType() {
+            return PARSER;
+        }
 
-    public static final int SLICE_CONFIG_FIELD_NUMBER = 8;
-    private context.ContextOuterClass.SliceConfig sliceConfig_;
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     * @return Whether the sliceConfig field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceConfig() {
-      return sliceConfig_ != null;
-    }
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     * @return The sliceConfig.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceConfig getSliceConfig() {
-      return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
-    }
-    /**
-     * <code>.context.SliceConfig slice_config = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-      return getSliceConfig();
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static final int SLICE_OWNER_FIELD_NUMBER = 9;
-    private context.ContextOuterClass.SliceOwner sliceOwner_;
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     * @return Whether the sliceOwner field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceOwner() {
-      return sliceOwner_ != null;
-    }
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     * @return The sliceOwner.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceOwner getSliceOwner() {
-      return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
-    }
-    /**
-     * <code>.context.SliceOwner slice_owner = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-      return getSliceOwner();
-    }
+    public interface Constraint_SLA_LatencyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Latency)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 10;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 10;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 10;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        /**
+         * <code>float e2e_latency_ms = 1;</code>
+         * @return The e2eLatencyMs.
+         */
+        float getE2ELatencyMs();
     }
+
     /**
-     * <code>.context.Timestamp timestamp = 10;</code>
+     * Protobuf type {@code context.Constraint_SLA_Latency}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+    public static final class Constraint_SLA_Latency extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Latency)
+    Constraint_SLA_LatencyOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use Constraint_SLA_Latency.newBuilder() to construct.
+        private Constraint_SLA_Latency(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (sliceId_ != null) {
-        output.writeMessage(1, getSliceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
-        output.writeMessage(3, sliceEndpointIds_.get(i));
-      }
-      for (int i = 0; i < sliceConstraints_.size(); i++) {
-        output.writeMessage(4, sliceConstraints_.get(i));
-      }
-      for (int i = 0; i < sliceServiceIds_.size(); i++) {
-        output.writeMessage(5, sliceServiceIds_.get(i));
-      }
-      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
-        output.writeMessage(6, sliceSubsliceIds_.get(i));
-      }
-      if (sliceStatus_ != null) {
-        output.writeMessage(7, getSliceStatus());
-      }
-      if (sliceConfig_ != null) {
-        output.writeMessage(8, getSliceConfig());
-      }
-      if (sliceOwner_ != null) {
-        output.writeMessage(9, getSliceOwner());
-      }
-      if (timestamp_ != null) {
-        output.writeMessage(10, getTimestamp());
-      }
-      unknownFields.writeTo(output);
-    }
+        private Constraint_SLA_Latency() {
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (sliceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSliceId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      for (int i = 0; i < sliceEndpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, sliceEndpointIds_.get(i));
-      }
-      for (int i = 0; i < sliceConstraints_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, sliceConstraints_.get(i));
-      }
-      for (int i = 0; i < sliceServiceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, sliceServiceIds_.get(i));
-      }
-      for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, sliceSubsliceIds_.get(i));
-      }
-      if (sliceStatus_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, getSliceStatus());
-      }
-      if (sliceConfig_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, getSliceConfig());
-      }
-      if (sliceOwner_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, getSliceOwner());
-      }
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(10, getTimestamp());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_SLA_Latency();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Slice)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;
-
-      if (hasSliceId() != other.hasSliceId()) return false;
-      if (hasSliceId()) {
-        if (!getSliceId()
-            .equals(other.getSliceId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getSliceEndpointIdsList()
-          .equals(other.getSliceEndpointIdsList())) return false;
-      if (!getSliceConstraintsList()
-          .equals(other.getSliceConstraintsList())) return false;
-      if (!getSliceServiceIdsList()
-          .equals(other.getSliceServiceIdsList())) return false;
-      if (!getSliceSubsliceIdsList()
-          .equals(other.getSliceSubsliceIdsList())) return false;
-      if (hasSliceStatus() != other.hasSliceStatus()) return false;
-      if (hasSliceStatus()) {
-        if (!getSliceStatus()
-            .equals(other.getSliceStatus())) return false;
-      }
-      if (hasSliceConfig() != other.hasSliceConfig()) return false;
-      if (hasSliceConfig()) {
-        if (!getSliceConfig()
-            .equals(other.getSliceConfig())) return false;
-      }
-      if (hasSliceOwner() != other.hasSliceOwner()) return false;
-      if (hasSliceOwner()) {
-        if (!getSliceOwner()
-            .equals(other.getSliceOwner())) return false;
-      }
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSliceId()) {
-        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (getSliceEndpointIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceEndpointIdsList().hashCode();
-      }
-      if (getSliceConstraintsCount() > 0) {
-        hash = (37 * hash) + SLICE_CONSTRAINTS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceConstraintsList().hashCode();
-      }
-      if (getSliceServiceIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceServiceIdsList().hashCode();
-      }
-      if (getSliceSubsliceIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_SUBSLICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceSubsliceIdsList().hashCode();
-      }
-      if (hasSliceStatus()) {
-        hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceStatus().hashCode();
-      }
-      if (hasSliceConfig()) {
-        hash = (37 * hash) + SLICE_CONFIG_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceConfig().hashCode();
-      }
-      if (hasSliceOwner()) {
-        hash = (37 * hash) + SLICE_OWNER_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceOwner().hashCode();
-      }
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
+        }
 
-    public static context.ContextOuterClass.Slice parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Slice parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Slice parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private float e2ELatencyMs_ = 0F;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Slice}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Slice)
-        context.ContextOuterClass.SliceOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Slice_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Slice.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSliceEndpointIdsFieldBuilder();
-          getSliceConstraintsFieldBuilder();
-          getSliceServiceIdsFieldBuilder();
-          getSliceSubsliceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-        name_ = "";
-
-        if (sliceEndpointIdsBuilder_ == null) {
-          sliceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          sliceEndpointIdsBuilder_.clear();
-        }
-        if (sliceConstraintsBuilder_ == null) {
-          sliceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          sliceConstraintsBuilder_.clear();
-        }
-        if (sliceServiceIdsBuilder_ == null) {
-          sliceServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          sliceServiceIdsBuilder_.clear();
-        }
-        if (sliceSubsliceIdsBuilder_ == null) {
-          sliceSubsliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-        } else {
-          sliceSubsliceIdsBuilder_.clear();
-        }
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = null;
-        } else {
-          sliceStatus_ = null;
-          sliceStatusBuilder_ = null;
-        }
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = null;
-        } else {
-          sliceConfig_ = null;
-          sliceConfigBuilder_ = null;
-        }
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = null;
-        } else {
-          sliceOwner_ = null;
-          sliceOwnerBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Slice_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Slice getDefaultInstanceForType() {
-        return context.ContextOuterClass.Slice.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Slice build() {
-        context.ContextOuterClass.Slice result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Slice buildPartial() {
-        context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
-        int from_bitField0_ = bitField0_;
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
-        } else {
-          result.sliceId_ = sliceIdBuilder_.build();
-        }
-        result.name_ = name_;
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.sliceEndpointIds_ = sliceEndpointIds_;
-        } else {
-          result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
-        }
-        if (sliceConstraintsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.sliceConstraints_ = sliceConstraints_;
-        } else {
-          result.sliceConstraints_ = sliceConstraintsBuilder_.build();
-        }
-        if (sliceServiceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.sliceServiceIds_ = sliceServiceIds_;
-        } else {
-          result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
-        }
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000008) != 0)) {
-            sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000008);
-          }
-          result.sliceSubsliceIds_ = sliceSubsliceIds_;
-        } else {
-          result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
-        }
-        if (sliceStatusBuilder_ == null) {
-          result.sliceStatus_ = sliceStatus_;
-        } else {
-          result.sliceStatus_ = sliceStatusBuilder_.build();
-        }
-        if (sliceConfigBuilder_ == null) {
-          result.sliceConfig_ = sliceConfig_;
-        } else {
-          result.sliceConfig_ = sliceConfigBuilder_.build();
-        }
-        if (sliceOwnerBuilder_ == null) {
-          result.sliceOwner_ = sliceOwner_;
-        } else {
-          result.sliceOwner_ = sliceOwnerBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Slice) {
-          return mergeFrom((context.ContextOuterClass.Slice)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Slice other) {
-        if (other == context.ContextOuterClass.Slice.getDefaultInstance()) return this;
-        if (other.hasSliceId()) {
-          mergeSliceId(other.getSliceId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (!other.sliceEndpointIds_.isEmpty()) {
-            if (sliceEndpointIds_.isEmpty()) {
-              sliceEndpointIds_ = other.sliceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureSliceEndpointIdsIsMutable();
-              sliceEndpointIds_.addAll(other.sliceEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceEndpointIds_.isEmpty()) {
-            if (sliceEndpointIdsBuilder_.isEmpty()) {
-              sliceEndpointIdsBuilder_.dispose();
-              sliceEndpointIdsBuilder_ = null;
-              sliceEndpointIds_ = other.sliceEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              sliceEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceEndpointIdsFieldBuilder() : null;
-            } else {
-              sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
+        /**
+         * <code>float e2e_latency_ms = 1;</code>
+         * @return The e2eLatencyMs.
+         */
+        @java.lang.Override
+        public float getE2ELatencyMs() {
+            return e2ELatencyMs_;
+        }
+
+        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.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+                output.writeFloat(1, e2ELatencyMs_);
             }
-          }
+            getUnknownFields().writeTo(output);
         }
-        if (sliceConstraintsBuilder_ == null) {
-          if (!other.sliceConstraints_.isEmpty()) {
-            if (sliceConstraints_.isEmpty()) {
-              sliceConstraints_ = other.sliceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureSliceConstraintsIsMutable();
-              sliceConstraints_.addAll(other.sliceConstraints_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceConstraints_.isEmpty()) {
-            if (sliceConstraintsBuilder_.isEmpty()) {
-              sliceConstraintsBuilder_.dispose();
-              sliceConstraintsBuilder_ = null;
-              sliceConstraints_ = other.sliceConstraints_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              sliceConstraintsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceConstraintsFieldBuilder() : null;
-            } else {
-              sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
             }
-          }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
         }
-        if (sliceServiceIdsBuilder_ == null) {
-          if (!other.sliceServiceIds_.isEmpty()) {
-            if (sliceServiceIds_.isEmpty()) {
-              sliceServiceIds_ = other.sliceServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureSliceServiceIdsIsMutable();
-              sliceServiceIds_.addAll(other.sliceServiceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceServiceIds_.isEmpty()) {
-            if (sliceServiceIdsBuilder_.isEmpty()) {
-              sliceServiceIdsBuilder_.dispose();
-              sliceServiceIdsBuilder_ = null;
-              sliceServiceIds_ = other.sliceServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              sliceServiceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceServiceIdsFieldBuilder() : null;
-            } else {
-              sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Latency)) {
+                return super.equals(obj);
             }
-          }
+            context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
+            if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
+                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) + E2E_LATENCY_MS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
         }
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (!other.sliceSubsliceIds_.isEmpty()) {
-            if (sliceSubsliceIds_.isEmpty()) {
-              sliceSubsliceIds_ = other.sliceSubsliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-            } else {
-              ensureSliceSubsliceIdsIsMutable();
-              sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceSubsliceIds_.isEmpty()) {
-            if (sliceSubsliceIdsBuilder_.isEmpty()) {
-              sliceSubsliceIdsBuilder_.dispose();
-              sliceSubsliceIdsBuilder_ = null;
-              sliceSubsliceIds_ = other.sliceSubsliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000008);
-              sliceSubsliceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceSubsliceIdsFieldBuilder() : null;
-            } else {
-              sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
-            }
-          }
-        }
-        if (other.hasSliceStatus()) {
-          mergeSliceStatus(other.getSliceStatus());
-        }
-        if (other.hasSliceConfig()) {
-          mergeSliceConfig(other.getSliceConfig());
-        }
-        if (other.hasSliceOwner()) {
-          mergeSliceOwner(other.getSliceOwner());
-        }
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Slice parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Slice) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.SliceId sliceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       * @return Whether the sliceId field is set.
-       */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       * @return The sliceId.
-       */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        } else {
-          return sliceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
-                  getParentForChildren(),
-                  isClean());
-          sliceId_ = null;
-        }
-        return sliceIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> sliceEndpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
-        if (sliceEndpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceEndpointIds_);
-        } else {
-          return sliceEndpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public int getSliceEndpointIdsCount() {
-        if (sliceEndpointIdsBuilder_ == null) {
-          return sliceEndpointIds_.size();
-        } else {
-          return sliceEndpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          return sliceEndpointIds_.get(index);
-        } else {
-          return sliceEndpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder setSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.set(index, value);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder setSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(value);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder addSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(index, value);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder addSliceEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder addSliceEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder addAllSliceEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceEndpointIds_);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder clearSliceEndpointIds() {
-        if (sliceEndpointIdsBuilder_ == null) {
-          sliceEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public Builder removeSliceEndpointIds(int index) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          ensureSliceEndpointIdsIsMutable();
-          sliceEndpointIds_.remove(index);
-          onChanged();
-        } else {
-          sliceEndpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(
-          int index) {
-        return getSliceEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(
-          int index) {
-        if (sliceEndpointIdsBuilder_ == null) {
-          return sliceEndpointIds_.get(index);  } else {
-          return sliceEndpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getSliceEndpointIdsOrBuilderList() {
-        if (sliceEndpointIdsBuilder_ != null) {
-          return sliceEndpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceEndpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder() {
-        return getSliceEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder(
-          int index) {
-        return getSliceEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getSliceEndpointIdsBuilderList() {
-        return getSliceEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getSliceEndpointIdsFieldBuilder() {
-        if (sliceEndpointIdsBuilder_ == null) {
-          sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  sliceEndpointIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceEndpointIds_ = null;
-        }
-        return sliceEndpointIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceConstraintsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> sliceConstraintsBuilder_;
-
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
-        if (sliceConstraintsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceConstraints_);
-        } else {
-          return sliceConstraintsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public int getSliceConstraintsCount() {
-        if (sliceConstraintsBuilder_ == null) {
-          return sliceConstraints_.size();
-        } else {
-          return sliceConstraintsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
-        if (sliceConstraintsBuilder_ == null) {
-          return sliceConstraints_.get(index);
-        } else {
-          return sliceConstraintsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder setSliceConstraints(
-          int index, context.ContextOuterClass.Constraint value) {
-        if (sliceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.set(index, value);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder setSliceConstraints(
-          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder addSliceConstraints(context.ContextOuterClass.Constraint value) {
-        if (sliceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.add(value);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder addSliceConstraints(
-          int index, context.ContextOuterClass.Constraint value) {
-        if (sliceConstraintsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.add(index, value);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder addSliceConstraints(
-          context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder addSliceConstraints(
-          int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder addAllSliceConstraints(
-          java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceConstraints_);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder clearSliceConstraints() {
-        if (sliceConstraintsBuilder_ == null) {
-          sliceConstraints_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public Builder removeSliceConstraints(int index) {
-        if (sliceConstraintsBuilder_ == null) {
-          ensureSliceConstraintsIsMutable();
-          sliceConstraints_.remove(index);
-          onChanged();
-        } else {
-          sliceConstraintsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder getSliceConstraintsBuilder(
-          int index) {
-        return getSliceConstraintsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(
-          int index) {
-        if (sliceConstraintsBuilder_ == null) {
-          return sliceConstraints_.get(index);  } else {
-          return sliceConstraintsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
-           getSliceConstraintsOrBuilderList() {
-        if (sliceConstraintsBuilder_ != null) {
-          return sliceConstraintsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceConstraints_);
-        }
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder() {
-        return getSliceConstraintsFieldBuilder().addBuilder(
-            context.ContextOuterClass.Constraint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder(
-          int index) {
-        return getSliceConstraintsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Constraint.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Constraint slice_constraints = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
-           getSliceConstraintsBuilderList() {
-        return getSliceConstraintsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> 
-          getSliceConstraintsFieldBuilder() {
-        if (sliceConstraintsBuilder_ == null) {
-          sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(
-                  sliceConstraints_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceConstraints_ = null;
-        }
-        return sliceConstraintsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> sliceServiceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
-        if (sliceServiceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceServiceIds_);
-        } else {
-          return sliceServiceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public int getSliceServiceIdsCount() {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.size();
-        } else {
-          return sliceServiceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.get(index);
-        } else {
-          return sliceServiceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder setSliceServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.set(index, value);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder setSliceServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(value);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder addSliceServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (sliceServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(index, value);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder addSliceServiceIds(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder addSliceServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder addAllSliceServiceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceServiceIds_);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder clearSliceServiceIds() {
-        if (sliceServiceIdsBuilder_ == null) {
-          sliceServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public Builder removeSliceServiceIds(int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          ensureSliceServiceIdsIsMutable();
-          sliceServiceIds_.remove(index);
-          onChanged();
-        } else {
-          sliceServiceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(
-          int index) {
-        return getSliceServiceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(
-          int index) {
-        if (sliceServiceIdsBuilder_ == null) {
-          return sliceServiceIds_.get(index);  } else {
-          return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getSliceServiceIdsOrBuilderList() {
-        if (sliceServiceIdsBuilder_ != null) {
-          return sliceServiceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceServiceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
-        return getSliceServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(
-          int index) {
-        return getSliceServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
-           getSliceServiceIdsBuilderList() {
-        return getSliceServiceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getSliceServiceIdsFieldBuilder() {
-        if (sliceServiceIdsBuilder_ == null) {
-          sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  sliceServiceIds_,
-                  ((bitField0_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceServiceIds_ = null;
-        }
-        return sliceServiceIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceSubsliceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000008) != 0)) {
-          sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
-          bitField0_ |= 0x00000008;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-        } else {
-          return sliceSubsliceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public int getSliceSubsliceIdsCount() {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          return sliceSubsliceIds_.size();
-        } else {
-          return sliceSubsliceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          return sliceSubsliceIds_.get(index);
-        } else {
-          return sliceSubsliceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder setSliceSubsliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.set(index, value);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder setSliceSubsliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId value) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.add(value);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder addSliceSubsliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.add(index, value);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder addSliceSubsliceIds(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder addSliceSubsliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder addAllSliceSubsliceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          ensureSliceSubsliceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceSubsliceIds_);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder clearSliceSubsliceIds() {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          sliceSubsliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000008);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public Builder removeSliceSubsliceIds(int index) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          ensureSliceSubsliceIdsIsMutable();
-          sliceSubsliceIds_.remove(index);
-          onChanged();
-        } else {
-          sliceSubsliceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(
-          int index) {
-        return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(
-          int index) {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          return sliceSubsliceIds_.get(index);  } else {
-          return sliceSubsliceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-           getSliceSubsliceIdsOrBuilderList() {
-        if (sliceSubsliceIdsBuilder_ != null) {
-          return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
-        return getSliceSubsliceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder(
-          int index) {
-        return getSliceSubsliceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
-           getSliceSubsliceIdsBuilderList() {
-        return getSliceSubsliceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceSubsliceIdsFieldBuilder() {
-        if (sliceSubsliceIdsBuilder_ == null) {
-          sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  sliceSubsliceIds_,
-                  ((bitField0_ & 0x00000008) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceSubsliceIds_ = null;
-        }
-        return sliceSubsliceIdsBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceStatus sliceStatus_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> sliceStatusBuilder_;
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       * @return Whether the sliceStatus field is set.
-       */
-      public boolean hasSliceStatus() {
-        return sliceStatusBuilder_ != null || sliceStatus_ != null;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       * @return The sliceStatus.
-       */
-      public context.ContextOuterClass.SliceStatus getSliceStatus() {
-        if (sliceStatusBuilder_ == null) {
-          return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
-        } else {
-          return sliceStatusBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
-        if (sliceStatusBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceStatus_ = value;
-          onChanged();
-        } else {
-          sliceStatusBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder setSliceStatus(
-          context.ContextOuterClass.SliceStatus.Builder builderForValue) {
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceStatusBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
-        if (sliceStatusBuilder_ == null) {
-          if (sliceStatus_ != null) {
-            sliceStatus_ =
-              context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
-          } else {
-            sliceStatus_ = value;
-          }
-          onChanged();
-        } else {
-          sliceStatusBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public Builder clearSliceStatus() {
-        if (sliceStatusBuilder_ == null) {
-          sliceStatus_ = null;
-          onChanged();
-        } else {
-          sliceStatus_ = null;
-          sliceStatusBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
-        
-        onChanged();
-        return getSliceStatusFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
-        if (sliceStatusBuilder_ != null) {
-          return sliceStatusBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceStatus_ == null ?
-              context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
-        }
-      }
-      /**
-       * <code>.context.SliceStatus slice_status = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> 
-          getSliceStatusFieldBuilder() {
-        if (sliceStatusBuilder_ == null) {
-          sliceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder>(
-                  getSliceStatus(),
-                  getParentForChildren(),
-                  isClean());
-          sliceStatus_ = null;
-        }
-        return sliceStatusBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceConfig sliceConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> sliceConfigBuilder_;
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       * @return Whether the sliceConfig field is set.
-       */
-      public boolean hasSliceConfig() {
-        return sliceConfigBuilder_ != null || sliceConfig_ != null;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       * @return The sliceConfig.
-       */
-      public context.ContextOuterClass.SliceConfig getSliceConfig() {
-        if (sliceConfigBuilder_ == null) {
-          return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
-        } else {
-          return sliceConfigBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder setSliceConfig(context.ContextOuterClass.SliceConfig value) {
-        if (sliceConfigBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceConfig_ = value;
-          onChanged();
-        } else {
-          sliceConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder setSliceConfig(
-          context.ContextOuterClass.SliceConfig.Builder builderForValue) {
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
-        if (sliceConfigBuilder_ == null) {
-          if (sliceConfig_ != null) {
-            sliceConfig_ =
-              context.ContextOuterClass.SliceConfig.newBuilder(sliceConfig_).mergeFrom(value).buildPartial();
-          } else {
-            sliceConfig_ = value;
-          }
-          onChanged();
-        } else {
-          sliceConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public Builder clearSliceConfig() {
-        if (sliceConfigBuilder_ == null) {
-          sliceConfig_ = null;
-          onChanged();
-        } else {
-          sliceConfig_ = null;
-          sliceConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
-        
-        onChanged();
-        return getSliceConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
-        if (sliceConfigBuilder_ != null) {
-          return sliceConfigBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceConfig_ == null ?
-              context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
-        }
-      }
-      /**
-       * <code>.context.SliceConfig slice_config = 8;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> 
-          getSliceConfigFieldBuilder() {
-        if (sliceConfigBuilder_ == null) {
-          sliceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder>(
-                  getSliceConfig(),
-                  getParentForChildren(),
-                  isClean());
-          sliceConfig_ = null;
-        }
-        return sliceConfigBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceOwner sliceOwner_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> sliceOwnerBuilder_;
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       * @return Whether the sliceOwner field is set.
-       */
-      public boolean hasSliceOwner() {
-        return sliceOwnerBuilder_ != null || sliceOwner_ != null;
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       * @return The sliceOwner.
-       */
-      public context.ContextOuterClass.SliceOwner getSliceOwner() {
-        if (sliceOwnerBuilder_ == null) {
-          return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
-        } else {
-          return sliceOwnerBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
-        if (sliceOwnerBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceOwner_ = value;
-          onChanged();
-        } else {
-          sliceOwnerBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public Builder setSliceOwner(
-          context.ContextOuterClass.SliceOwner.Builder builderForValue) {
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceOwnerBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
-        if (sliceOwnerBuilder_ == null) {
-          if (sliceOwner_ != null) {
-            sliceOwner_ =
-              context.ContextOuterClass.SliceOwner.newBuilder(sliceOwner_).mergeFrom(value).buildPartial();
-          } else {
-            sliceOwner_ = value;
-          }
-          onChanged();
-        } else {
-          sliceOwnerBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public Builder clearSliceOwner() {
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwner_ = null;
-          onChanged();
-        } else {
-          sliceOwner_ = null;
-          sliceOwnerBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
-        
-        onChanged();
-        return getSliceOwnerFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
-        if (sliceOwnerBuilder_ != null) {
-          return sliceOwnerBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceOwner_ == null ?
-              context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
-        }
-      }
-      /**
-       * <code>.context.SliceOwner slice_owner = 9;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> 
-          getSliceOwnerFieldBuilder() {
-        if (sliceOwnerBuilder_ == null) {
-          sliceOwnerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder>(
-                  getSliceOwner(),
-                  getParentForChildren(),
-                  isClean());
-          sliceOwner_ = null;
-        }
-        return sliceOwnerBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 10;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Slice)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.Slice)
-    private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.Slice getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<Slice>
-        PARSER = new com.google.protobuf.AbstractParser<Slice>() {
-      @java.lang.Override
-      public Slice parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Slice(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Slice> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Slice> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Slice getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-  public interface SliceOwnerOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceOwner)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return Whether the ownerUuid field is set.
-     */
-    boolean hasOwnerUuid();
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return The ownerUuid.
-     */
-    context.ContextOuterClass.Uuid getOwnerUuid();
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * <code>string owner_string = 2;</code>
-     * @return The ownerString.
-     */
-    java.lang.String getOwnerString();
-    /**
-     * <code>string owner_string = 2;</code>
-     * @return The bytes for ownerString.
-     */
-    com.google.protobuf.ByteString
-        getOwnerStringBytes();
-  }
-  /**
-   * Protobuf type {@code context.SliceOwner}
-   */
-  public static final class SliceOwner extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceOwner)
-      SliceOwnerOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceOwner.newBuilder() to construct.
-    private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceOwner() {
-      ownerString_ = "";
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceOwner();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceOwner(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (ownerUuid_ != null) {
-                subBuilder = ownerUuid_.toBuilder();
-              }
-              ownerUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(ownerUuid_);
-                ownerUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              ownerString_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int OWNER_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid ownerUuid_;
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return Whether the ownerUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasOwnerUuid() {
-      return ownerUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     * @return The ownerUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getOwnerUuid() {
-      return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
-    }
-    /**
-     * <code>.context.Uuid owner_uuid = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-      return getOwnerUuid();
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static final int OWNER_STRING_FIELD_NUMBER = 2;
-    private volatile java.lang.Object ownerString_;
-    /**
-     * <code>string owner_string = 2;</code>
-     * @return The ownerString.
-     */
-    @java.lang.Override
-    public java.lang.String getOwnerString() {
-      java.lang.Object ref = ownerString_;
-      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();
-        ownerString_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string owner_string = 2;</code>
-     * @return The bytes for ownerString.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getOwnerStringBytes() {
-      java.lang.Object ref = ownerString_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        ownerString_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Latency prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (ownerUuid_ != null) {
-        output.writeMessage(1, getOwnerUuid());
-      }
-      if (!getOwnerStringBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (ownerUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getOwnerUuid());
-      }
-      if (!getOwnerStringBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_SLA_Latency}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Latency)
+        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder {
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;
-
-      if (hasOwnerUuid() != other.hasOwnerUuid()) return false;
-      if (hasOwnerUuid()) {
-        if (!getOwnerUuid()
-            .equals(other.getOwnerUuid())) return false;
-      }
-      if (!getOwnerString()
-          .equals(other.getOwnerString())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasOwnerUuid()) {
-        hash = (37 * hash) + OWNER_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getOwnerUuid().hashCode();
-      }
-      hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
-      hash = (53 * hash) + getOwnerString().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
+            }
 
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceOwner parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceOwner}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceOwner)
-        context.ContextOuterClass.SliceOwnerOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = null;
-        } else {
-          ownerUuid_ = null;
-          ownerUuidBuilder_ = null;
-        }
-        ownerString_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceOwner.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceOwner build() {
-        context.ContextOuterClass.SliceOwner result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceOwner buildPartial() {
-        context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
-        if (ownerUuidBuilder_ == null) {
-          result.ownerUuid_ = ownerUuid_;
-        } else {
-          result.ownerUuid_ = ownerUuidBuilder_.build();
-        }
-        result.ownerString_ = ownerString_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceOwner) {
-          return mergeFrom((context.ContextOuterClass.SliceOwner)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceOwner other) {
-        if (other == context.ContextOuterClass.SliceOwner.getDefaultInstance()) return this;
-        if (other.hasOwnerUuid()) {
-          mergeOwnerUuid(other.getOwnerUuid());
-        }
-        if (!other.getOwnerString().isEmpty()) {
-          ownerString_ = other.ownerString_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceOwner parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceOwner) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid ownerUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       * @return Whether the ownerUuid field is set.
-       */
-      public boolean hasOwnerUuid() {
-        return ownerUuidBuilder_ != null || ownerUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       * @return The ownerUuid.
-       */
-      public context.ContextOuterClass.Uuid getOwnerUuid() {
-        if (ownerUuidBuilder_ == null) {
-          return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
-        } else {
-          return ownerUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
-        if (ownerUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ownerUuid_ = value;
-          onChanged();
-        } else {
-          ownerUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public Builder setOwnerUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          ownerUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
-        if (ownerUuidBuilder_ == null) {
-          if (ownerUuid_ != null) {
-            ownerUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(ownerUuid_).mergeFrom(value).buildPartial();
-          } else {
-            ownerUuid_ = value;
-          }
-          onChanged();
-        } else {
-          ownerUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public Builder clearOwnerUuid() {
-        if (ownerUuidBuilder_ == null) {
-          ownerUuid_ = null;
-          onChanged();
-        } else {
-          ownerUuid_ = null;
-          ownerUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
-        
-        onChanged();
-        return getOwnerUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
-        if (ownerUuidBuilder_ != null) {
-          return ownerUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return ownerUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid owner_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getOwnerUuidFieldBuilder() {
-        if (ownerUuidBuilder_ == null) {
-          ownerUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getOwnerUuid(),
-                  getParentForChildren(),
-                  isClean());
-          ownerUuid_ = null;
-        }
-        return ownerUuidBuilder_;
-      }
-
-      private java.lang.Object ownerString_ = "";
-      /**
-       * <code>string owner_string = 2;</code>
-       * @return The ownerString.
-       */
-      public java.lang.String getOwnerString() {
-        java.lang.Object ref = ownerString_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          ownerString_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string owner_string = 2;</code>
-       * @return The bytes for ownerString.
-       */
-      public com.google.protobuf.ByteString
-          getOwnerStringBytes() {
-        java.lang.Object ref = ownerString_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          ownerString_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string owner_string = 2;</code>
-       * @param value The ownerString to set.
-       * @return This builder for chaining.
-       */
-      public Builder setOwnerString(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        ownerString_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string owner_string = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearOwnerString() {
-        
-        ownerString_ = getDefaultInstance().getOwnerString();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string owner_string = 2;</code>
-       * @param value The bytes for ownerString to set.
-       * @return This builder for chaining.
-       */
-      public Builder setOwnerStringBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        ownerString_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceOwner)
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                e2ELatencyMs_ = 0F;
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.SliceOwner)
-    private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
+            }
 
-    public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+            }
 
-    private static final com.google.protobuf.Parser<SliceOwner>
-        PARSER = new com.google.protobuf.AbstractParser<SliceOwner>() {
-      @java.lang.Override
-      public SliceOwner parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceOwner(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceOwner> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Latency build() {
+                context.ContextOuterClass.Constraint_SLA_Latency result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceOwner> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
+                context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.e2ELatencyMs_ = e2ELatencyMs_;
+                }
+            }
 
-  }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_SLA_Latency) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-  public interface SliceStatusOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceStatus)
-      com.google.protobuf.MessageOrBuilder {
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Latency other) {
+                if (other == context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance())
+                    return this;
+                if (other.getE2ELatencyMs() != 0F) {
+                    setE2ELatencyMs(other.getE2ELatencyMs());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The enum numeric value on the wire for sliceStatus.
-     */
-    int getSliceStatusValue();
-    /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The sliceStatus.
-     */
-    context.ContextOuterClass.SliceStatusEnum getSliceStatus();
-  }
-  /**
-   * Protobuf type {@code context.SliceStatus}
-   */
-  public static final class SliceStatus extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceStatus)
-      SliceStatusOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceStatus.newBuilder() to construct.
-    private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceStatus() {
-      sliceStatus_ = 0;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceStatus();
-    }
+            @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 13:
+                                {
+                                    e2ELatencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceStatus(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              sliceStatus_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
-    }
+            private float e2ELatencyMs_;
 
-    public static final int SLICE_STATUS_FIELD_NUMBER = 1;
-    private int sliceStatus_;
-    /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The enum numeric value on the wire for sliceStatus.
-     */
-    @java.lang.Override public int getSliceStatusValue() {
-      return sliceStatus_;
-    }
-    /**
-     * <code>.context.SliceStatusEnum slice_status = 1;</code>
-     * @return The sliceStatus.
-     */
-    @java.lang.Override public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
-      return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
-    }
+            /**
+             * <code>float e2e_latency_ms = 1;</code>
+             * @return The e2eLatencyMs.
+             */
+            @java.lang.Override
+            public float getE2ELatencyMs() {
+                return e2ELatencyMs_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>float e2e_latency_ms = 1;</code>
+             * @param value The e2eLatencyMs to set.
+             * @return This builder for chaining.
+             */
+            public Builder setE2ELatencyMs(float value) {
+                e2ELatencyMs_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>float e2e_latency_ms = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearE2ELatencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                e2ELatencyMs_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
-        output.writeEnum(1, sliceStatus_);
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, sliceStatus_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Latency)
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceStatus)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
-
-      if (sliceStatus_ != other.sliceStatus_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Latency)
+        private static final context.ContextOuterClass.Constraint_SLA_Latency DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
-      hash = (53 * hash) + sliceStatus_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Latency();
+        }
 
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceStatus parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private static final com.google.protobuf.Parser<Constraint_SLA_Latency> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Latency>() {
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceStatus}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceStatus)
-        context.ContextOuterClass.SliceStatusOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        sliceStatus_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceStatus.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceStatus build() {
-        context.ContextOuterClass.SliceStatus result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceStatus buildPartial() {
-        context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
-        result.sliceStatus_ = sliceStatus_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceStatus) {
-          return mergeFrom((context.ContextOuterClass.SliceStatus)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceStatus other) {
-        if (other == context.ContextOuterClass.SliceStatus.getDefaultInstance()) return this;
-        if (other.sliceStatus_ != 0) {
-          setSliceStatusValue(other.getSliceStatusValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceStatus parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceStatus) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int sliceStatus_ = 0;
-      /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return The enum numeric value on the wire for sliceStatus.
-       */
-      @java.lang.Override public int getSliceStatusValue() {
-        return sliceStatus_;
-      }
-      /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @param value The enum numeric value on the wire for sliceStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSliceStatusValue(int value) {
-        
-        sliceStatus_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return The sliceStatus.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.valueOf(sliceStatus_);
-        return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @param value The sliceStatus to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        sliceStatus_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.SliceStatusEnum slice_status = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSliceStatus() {
-        
-        sliceStatus_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceStatus)
-    }
+            @java.lang.Override
+            public Constraint_SLA_Latency 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();
+            }
+        };
 
-    // @@protoc_insertion_point(class_scope:context.SliceStatus)
-    private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
-    }
+        public static com.google.protobuf.Parser<Constraint_SLA_Latency> parser() {
+            return PARSER;
+        }
 
-    public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_SLA_Latency> getParserForType() {
+            return PARSER;
+        }
 
-    private static final com.google.protobuf.Parser<SliceStatus>
-        PARSER = new com.google.protobuf.AbstractParser<SliceStatus>() {
-      @java.lang.Override
-      public SliceStatus parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceStatus(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceStatus> parser() {
-      return PARSER;
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceStatus> getParserForType() {
-      return PARSER;
-    }
+    public interface Constraint_SLA_CapacityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Capacity)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+        /**
+         * <code>float capacity_gbps = 1;</code>
+         * @return The capacityGbps.
+         */
+        float getCapacityGbps();
     }
 
-  }
-
-  public interface SliceConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceConfig)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ConfigRule> 
-        getConfigRulesList();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    context.ContextOuterClass.ConfigRule getConfigRules(int index);
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    int getConfigRulesCount();
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList();
     /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
+     * Protobuf type {@code context.Constraint_SLA_Capacity}
      */
-    context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.SliceConfig}
-   */
-  public static final class SliceConfig extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceConfig)
-      SliceConfigOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceConfig.newBuilder() to construct.
-    private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceConfig() {
-      configRules_ = java.util.Collections.emptyList();
-    }
+    public static final class Constraint_SLA_Capacity extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Capacity)
+    Constraint_SLA_CapacityOrBuilder {
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceConfig();
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceConfig(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              configRules_.add(
-                  input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          configRules_ = java.util.Collections.unmodifiableList(configRules_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
-    }
+        // Use Constraint_SLA_Capacity.newBuilder() to construct.
+        private Constraint_SLA_Capacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
-    }
+        private Constraint_SLA_Capacity() {
+        }
 
-    public static final int CONFIG_RULES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-        getConfigRulesOrBuilderList() {
-      return configRules_;
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public int getConfigRulesCount() {
-      return configRules_.size();
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-      return configRules_.get(index);
-    }
-    /**
-     * <code>repeated .context.ConfigRule config_rules = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-        int index) {
-      return configRules_.get(index);
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_SLA_Capacity();
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < configRules_.size(); i++) {
-        output.writeMessage(1, configRules_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < configRules_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, configRules_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private float capacityGbps_ = 0F;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceConfig)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
-
-      if (!getConfigRulesList()
-          .equals(other.getConfigRulesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>float capacity_gbps = 1;</code>
+         * @return The capacityGbps.
+         */
+        @java.lang.Override
+        public float getCapacityGbps() {
+            return capacityGbps_;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConfigRulesCount() > 0) {
-        hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
-        hash = (53 * hash) + getConfigRulesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceConfig parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceConfig 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
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+                output.writeFloat(1, capacityGbps_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceConfig}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceConfig)
-        context.ContextOuterClass.SliceConfigOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConfigRulesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceConfig.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig build() {
-        context.ContextOuterClass.SliceConfig result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceConfig buildPartial() {
-        context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
-        int from_bitField0_ = bitField0_;
-        if (configRulesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            configRules_ = java.util.Collections.unmodifiableList(configRules_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.configRules_ = configRules_;
-        } else {
-          result.configRules_ = configRulesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceConfig) {
-          return mergeFrom((context.ContextOuterClass.SliceConfig)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceConfig other) {
-        if (other == context.ContextOuterClass.SliceConfig.getDefaultInstance()) return this;
-        if (configRulesBuilder_ == null) {
-          if (!other.configRules_.isEmpty()) {
-            if (configRules_.isEmpty()) {
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureConfigRulesIsMutable();
-              configRules_.addAll(other.configRules_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.configRules_.isEmpty()) {
-            if (configRulesBuilder_.isEmpty()) {
-              configRulesBuilder_.dispose();
-              configRulesBuilder_ = null;
-              configRules_ = other.configRules_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              configRulesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConfigRulesFieldBuilder() : null;
-            } else {
-              configRulesBuilder_.addAllMessages(other.configRules_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ =
-        java.util.Collections.emptyList();
-      private void ensureConfigRulesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;
-
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
-        if (configRulesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(configRules_);
-        } else {
-          return configRulesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public int getConfigRulesCount() {
-        if (configRulesBuilder_ == null) {
-          return configRules_.size();
-        } else {
-          return configRulesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);
-        } else {
-          return configRulesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder setConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule value) {
-        if (configRulesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, value);
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addConfigRules(
-          int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          configRulesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder addAllConfigRules(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, configRules_);
-          onChanged();
-        } else {
-          configRulesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder clearConfigRules() {
-        if (configRulesBuilder_ == null) {
-          configRules_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          configRulesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public Builder removeConfigRules(int index) {
-        if (configRulesBuilder_ == null) {
-          ensureConfigRulesIsMutable();
-          configRules_.remove(index);
-          onChanged();
-        } else {
-          configRulesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(
-          int index) {
-        if (configRulesBuilder_ == null) {
-          return configRules_.get(index);  } else {
-          return configRulesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> 
-           getConfigRulesOrBuilderList() {
-        if (configRulesBuilder_ != null) {
-          return configRulesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(configRules_);
-        }
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
-        return getConfigRulesFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(
-          int index) {
-        return getConfigRulesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConfigRule config_rules = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConfigRule.Builder> 
-           getConfigRulesBuilderList() {
-        return getConfigRulesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> 
-          getConfigRulesFieldBuilder() {
-        if (configRulesBuilder_ == null) {
-          configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(
-                  configRules_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          configRules_ = null;
-        }
-        return configRulesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceConfig)
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.SliceConfig)
-    private static final context.ContextOuterClass.SliceConfig DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceConfig();
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Capacity)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
+            if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
+                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) + CAPACITY_GBPS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    public static context.ContextOuterClass.SliceConfig getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    private static final com.google.protobuf.Parser<SliceConfig>
-        PARSER = new com.google.protobuf.AbstractParser<SliceConfig>() {
-      @java.lang.Override
-      public SliceConfig parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceConfig(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceConfig> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceConfig> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  public interface SliceIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceIdList)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.SliceId> 
-        getSliceIdsList();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    context.ContextOuterClass.SliceId getSliceIds(int index);
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    int getSliceIdsCount();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.SliceIdList}
-   */
-  public static final class SliceIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceIdList)
-      SliceIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceIdList.newBuilder() to construct.
-    private SliceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceIdList() {
-      sliceIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceIdList();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              sliceIds_.add(
-                  input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int SLICE_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
-      return sliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-        getSliceIdsOrBuilderList() {
-      return sliceIds_;
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getSliceIdsCount() {
-      return sliceIds_.size();
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceIds(int index) {
-      return sliceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.SliceId slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-        int index) {
-      return sliceIds_.get(index);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < sliceIds_.size(); i++) {
-        output.writeMessage(1, sliceIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < sliceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, sliceIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Capacity prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
-
-      if (!getSliceIdsList()
-          .equals(other.getSliceIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code context.Constraint_SLA_Capacity}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Capacity)
+        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSliceIdsCount() > 0) {
-        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
+            }
 
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceIdList)
-        context.ContextOuterClass.SliceIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSliceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          sliceIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList build() {
-        context.ContextOuterClass.SliceIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceIdList buildPartial() {
-        context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (sliceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.sliceIds_ = sliceIds_;
-        } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceIdList) {
-          return mergeFrom((context.ContextOuterClass.SliceIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceIdList other) {
-        if (other == context.ContextOuterClass.SliceIdList.getDefaultInstance()) return this;
-        if (sliceIdsBuilder_ == null) {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIds_.isEmpty()) {
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureSliceIdsIsMutable();
-              sliceIds_.addAll(other.sliceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.sliceIds_.isEmpty()) {
-            if (sliceIdsBuilder_.isEmpty()) {
-              sliceIdsBuilder_.dispose();
-              sliceIdsBuilder_ = null;
-              sliceIds_ = other.sliceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              sliceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSliceIdsFieldBuilder() : null;
-            } else {
-              sliceIdsBuilder_.addAllMessages(other.sliceIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSliceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
-        if (sliceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(sliceIds_);
-        } else {
-          return sliceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public int getSliceIdsCount() {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.size();
-        } else {
-          return sliceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId getSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);
-        } else {
-          return sliceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder setSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, value);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder addSliceIds(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder addSliceIds(
-          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder addAllSliceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, sliceIds_);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder clearSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public Builder removeSliceIds(int index) {
-        if (sliceIdsBuilder_ == null) {
-          ensureSliceIdsIsMutable();
-          sliceIds_.remove(index);
-          onChanged();
-        } else {
-          sliceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(
-          int index) {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_.get(index);  } else {
-          return sliceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> 
-           getSliceIdsOrBuilderList() {
-        if (sliceIdsBuilder_ != null) {
-          return sliceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(sliceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
-        return getSliceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(
-          int index) {
-        return getSliceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.SliceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.SliceId slice_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.SliceId.Builder> 
-           getSliceIdsBuilderList() {
-        return getSliceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdsFieldBuilder() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  sliceIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          sliceIds_ = null;
-        }
-        return sliceIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceIdList)
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                capacityGbps_ = 0F;
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.SliceIdList)
-    private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
+            }
 
-    public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+            }
 
-    private static final com.google.protobuf.Parser<SliceIdList>
-        PARSER = new com.google.protobuf.AbstractParser<SliceIdList>() {
-      @java.lang.Override
-      public SliceIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceIdList> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Capacity build() {
+                context.ContextOuterClass.Constraint_SLA_Capacity result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceIdList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
+                context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.capacityGbps_ = capacityGbps_;
+                }
+            }
 
-  }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_SLA_Capacity) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-  public interface SliceListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceList)
-      com.google.protobuf.MessageOrBuilder {
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Capacity other) {
+                if (other == context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance())
+                    return this;
+                if (other.getCapacityGbps() != 0F) {
+                    setCapacityGbps(other.getCapacityGbps());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Slice> 
-        getSlicesList();
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    context.ContextOuterClass.Slice getSlices(int index);
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    int getSlicesCount();
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-        getSlicesOrBuilderList();
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.SliceList}
-   */
-  public static final class SliceList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceList)
-      SliceListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceList.newBuilder() to construct.
-    private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceList() {
-      slices_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceList();
-    }
+            @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 13:
+                                {
+                                    capacityGbps_ = input.readFloat();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 13
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              slices_.add(
-                  input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          slices_ = java.util.Collections.unmodifiableList(slices_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
-    }
+            private float capacityGbps_;
 
-    public static final int SLICES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Slice> slices_;
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
-      return slices_;
-    }
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-        getSlicesOrBuilderList() {
-      return slices_;
-    }
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    @java.lang.Override
-    public int getSlicesCount() {
-      return slices_.size();
-    }
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Slice getSlices(int index) {
-      return slices_.get(index);
-    }
-    /**
-     * <code>repeated .context.Slice slices = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
-        int index) {
-      return slices_.get(index);
-    }
+            /**
+             * <code>float capacity_gbps = 1;</code>
+             * @return The capacityGbps.
+             */
+            @java.lang.Override
+            public float getCapacityGbps() {
+                return capacityGbps_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>float capacity_gbps = 1;</code>
+             * @param value The capacityGbps to set.
+             * @return This builder for chaining.
+             */
+            public Builder setCapacityGbps(float value) {
+                capacityGbps_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>float capacity_gbps = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearCapacityGbps() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                capacityGbps_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < slices_.size(); i++) {
-        output.writeMessage(1, slices_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < slices_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, slices_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Capacity)
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
-
-      if (!getSlicesList()
-          .equals(other.getSlicesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Capacity)
+        private static final context.ContextOuterClass.Constraint_SLA_Capacity DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSlicesCount() > 0) {
-        hash = (37 * hash) + SLICES_FIELD_NUMBER;
-        hash = (53 * hash) + getSlicesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Capacity();
+        }
 
-    public static context.ContextOuterClass.SliceList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private static final com.google.protobuf.Parser<Constraint_SLA_Capacity> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Capacity>() {
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceList)
-        context.ContextOuterClass.SliceListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSlicesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (slicesBuilder_ == null) {
-          slices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          slicesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceList build() {
-        context.ContextOuterClass.SliceList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceList buildPartial() {
-        context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
-        int from_bitField0_ = bitField0_;
-        if (slicesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            slices_ = java.util.Collections.unmodifiableList(slices_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.slices_ = slices_;
-        } else {
-          result.slices_ = slicesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceList) {
-          return mergeFrom((context.ContextOuterClass.SliceList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceList other) {
-        if (other == context.ContextOuterClass.SliceList.getDefaultInstance()) return this;
-        if (slicesBuilder_ == null) {
-          if (!other.slices_.isEmpty()) {
-            if (slices_.isEmpty()) {
-              slices_ = other.slices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureSlicesIsMutable();
-              slices_.addAll(other.slices_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.slices_.isEmpty()) {
-            if (slicesBuilder_.isEmpty()) {
-              slicesBuilder_.dispose();
-              slicesBuilder_ = null;
-              slices_ = other.slices_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              slicesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSlicesFieldBuilder() : null;
-            } else {
-              slicesBuilder_.addAllMessages(other.slices_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Slice> slices_ =
-        java.util.Collections.emptyList();
-      private void ensureSlicesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>(slices_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> slicesBuilder_;
-
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
-        if (slicesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(slices_);
-        } else {
-          return slicesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public int getSlicesCount() {
-        if (slicesBuilder_ == null) {
-          return slices_.size();
-        } else {
-          return slicesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public context.ContextOuterClass.Slice getSlices(int index) {
-        if (slicesBuilder_ == null) {
-          return slices_.get(index);
-        } else {
-          return slicesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder setSlices(
-          int index, context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSlicesIsMutable();
-          slices_.set(index, value);
-          onChanged();
-        } else {
-          slicesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder setSlices(
-          int index, context.ContextOuterClass.Slice.Builder builderForValue) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          slicesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder addSlices(context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSlicesIsMutable();
-          slices_.add(value);
-          onChanged();
-        } else {
-          slicesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder addSlices(
-          int index, context.ContextOuterClass.Slice value) {
-        if (slicesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSlicesIsMutable();
-          slices_.add(index, value);
-          onChanged();
-        } else {
-          slicesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder addSlices(
-          context.ContextOuterClass.Slice.Builder builderForValue) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.add(builderForValue.build());
-          onChanged();
-        } else {
-          slicesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder addSlices(
-          int index, context.ContextOuterClass.Slice.Builder builderForValue) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          slicesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder addAllSlices(
-          java.lang.Iterable<? extends context.ContextOuterClass.Slice> values) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, slices_);
-          onChanged();
-        } else {
-          slicesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder clearSlices() {
-        if (slicesBuilder_ == null) {
-          slices_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          slicesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public Builder removeSlices(int index) {
-        if (slicesBuilder_ == null) {
-          ensureSlicesIsMutable();
-          slices_.remove(index);
-          onChanged();
-        } else {
-          slicesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public context.ContextOuterClass.Slice.Builder getSlicesBuilder(
-          int index) {
-        return getSlicesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(
-          int index) {
-        if (slicesBuilder_ == null) {
-          return slices_.get(index);  } else {
-          return slicesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> 
-           getSlicesOrBuilderList() {
-        if (slicesBuilder_ != null) {
-          return slicesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(slices_);
-        }
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
-        return getSlicesFieldBuilder().addBuilder(
-            context.ContextOuterClass.Slice.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public context.ContextOuterClass.Slice.Builder addSlicesBuilder(
-          int index) {
-        return getSlicesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Slice.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Slice slices = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Slice.Builder> 
-           getSlicesBuilderList() {
-        return getSlicesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> 
-          getSlicesFieldBuilder() {
-        if (slicesBuilder_ == null) {
-          slicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder>(
-                  slices_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          slices_ = null;
-        }
-        return slicesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceList)
-    }
+            @java.lang.Override
+            public Constraint_SLA_Capacity 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();
+            }
+        };
 
-    // @@protoc_insertion_point(class_scope:context.SliceList)
-    private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
-    }
+        public static com.google.protobuf.Parser<Constraint_SLA_Capacity> parser() {
+            return PARSER;
+        }
 
-    public static context.ContextOuterClass.SliceList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_SLA_Capacity> getParserForType() {
+            return PARSER;
+        }
 
-    private static final com.google.protobuf.Parser<SliceList>
-        PARSER = new com.google.protobuf.AbstractParser<SliceList>() {
-      @java.lang.Override
-      public SliceList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceList> parser() {
-      return PARSER;
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceList> getParserForType() {
-      return PARSER;
-    }
+    public interface Constraint_SLA_AvailabilityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Availability)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>uint32 num_disjoint_paths = 1;</code>
+         * @return The numDisjointPaths.
+         */
+        int getNumDisjointPaths();
 
-  }
+        /**
+         * <code>bool all_active = 2;</code>
+         * @return The allActive.
+         */
+        boolean getAllActive();
 
-  public interface SliceFilterOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceFilter)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <pre>
+         * 0.0 .. 100.0 percentage of availability
+         * </pre>
+         *
+         * <code>float availability = 3;</code>
+         * @return The availability.
+         */
+        float getAvailability();
+    }
 
     /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
-     * @return Whether the sliceIds field is set.
-     */
-    boolean hasSliceIds();
-    /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
-     * @return The sliceIds.
-     */
-    context.ContextOuterClass.SliceIdList getSliceIds();
-    /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
+     * Protobuf type {@code context.Constraint_SLA_Availability}
      */
-    context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder();
+    public static final class Constraint_SLA_Availability extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
+    Constraint_SLA_AvailabilityOrBuilder {
 
-    /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
-     */
-    boolean getIncludeEndpointIds();
+        private static final long serialVersionUID = 0L;
 
-    /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
-     */
-    boolean getIncludeConstraints();
+        // Use Constraint_SLA_Availability.newBuilder() to construct.
+        private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    /**
-     * <code>bool include_service_ids = 4;</code>
-     * @return The includeServiceIds.
-     */
-    boolean getIncludeServiceIds();
+        private Constraint_SLA_Availability() {
+        }
 
-    /**
-     * <code>bool include_subslice_ids = 5;</code>
-     * @return The includeSubsliceIds.
-     */
-    boolean getIncludeSubsliceIds();
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_SLA_Availability();
+        }
 
-    /**
-     * <code>bool include_config_rules = 6;</code>
-     * @return The includeConfigRules.
-     */
-    boolean getIncludeConfigRules();
-  }
-  /**
-   * Protobuf type {@code context.SliceFilter}
-   */
-  public static final class SliceFilter extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceFilter)
-      SliceFilterOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceFilter.newBuilder() to construct.
-    private SliceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceFilter() {
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceFilter();
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceFilter(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.SliceIdList.Builder subBuilder = null;
-              if (sliceIds_ != null) {
-                subBuilder = sliceIds_.toBuilder();
-              }
-              sliceIds_ = input.readMessage(context.ContextOuterClass.SliceIdList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceIds_);
-                sliceIds_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              includeEndpointIds_ = input.readBool();
-              break;
-            }
-            case 24: {
-
-              includeConstraints_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeServiceIds_ = input.readBool();
-              break;
-            }
-            case 40: {
-
-              includeSubsliceIds_ = input.readBool();
-              break;
-            }
-            case 48: {
-
-              includeConfigRules_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
-    }
+        public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
-    }
+        private int numDisjointPaths_ = 0;
 
-    public static final int SLICE_IDS_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.SliceIdList sliceIds_;
-    /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
-     * @return Whether the sliceIds field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceIds() {
-      return sliceIds_ != null;
-    }
-    /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
-     * @return The sliceIds.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdList getSliceIds() {
-      return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
-    }
-    /**
-     * <code>.context.SliceIdList slice_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-      return getSliceIds();
-    }
+        /**
+         * <code>uint32 num_disjoint_paths = 1;</code>
+         * @return The numDisjointPaths.
+         */
+        @java.lang.Override
+        public int getNumDisjointPaths() {
+            return numDisjointPaths_;
+        }
 
-    public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;
-    private boolean includeEndpointIds_;
-    /**
-     * <code>bool include_endpoint_ids = 2;</code>
-     * @return The includeEndpointIds.
-     */
-    @java.lang.Override
-    public boolean getIncludeEndpointIds() {
-      return includeEndpointIds_;
-    }
+        public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
 
-    public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;
-    private boolean includeConstraints_;
-    /**
-     * <code>bool include_constraints = 3;</code>
-     * @return The includeConstraints.
-     */
-    @java.lang.Override
-    public boolean getIncludeConstraints() {
-      return includeConstraints_;
-    }
+        private boolean allActive_ = false;
 
-    public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;
-    private boolean includeServiceIds_;
-    /**
-     * <code>bool include_service_ids = 4;</code>
-     * @return The includeServiceIds.
-     */
-    @java.lang.Override
-    public boolean getIncludeServiceIds() {
-      return includeServiceIds_;
-    }
+        /**
+         * <code>bool all_active = 2;</code>
+         * @return The allActive.
+         */
+        @java.lang.Override
+        public boolean getAllActive() {
+            return allActive_;
+        }
 
-    public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;
-    private boolean includeSubsliceIds_;
-    /**
-     * <code>bool include_subslice_ids = 5;</code>
-     * @return The includeSubsliceIds.
-     */
-    @java.lang.Override
-    public boolean getIncludeSubsliceIds() {
-      return includeSubsliceIds_;
-    }
+        public static final int AVAILABILITY_FIELD_NUMBER = 3;
 
-    public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;
-    private boolean includeConfigRules_;
-    /**
-     * <code>bool include_config_rules = 6;</code>
-     * @return The includeConfigRules.
-     */
-    @java.lang.Override
-    public boolean getIncludeConfigRules() {
-      return includeConfigRules_;
-    }
+        private float availability_ = 0F;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        /**
+         * <pre>
+         * 0.0 .. 100.0 percentage of availability
+         * </pre>
+         *
+         * <code>float availability = 3;</code>
+         * @return The availability.
+         */
+        @java.lang.Override
+        public float getAvailability() {
+            return availability_;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (sliceIds_ != null) {
-        output.writeMessage(1, getSliceIds());
-      }
-      if (includeEndpointIds_ != false) {
-        output.writeBool(2, includeEndpointIds_);
-      }
-      if (includeConstraints_ != false) {
-        output.writeBool(3, includeConstraints_);
-      }
-      if (includeServiceIds_ != false) {
-        output.writeBool(4, includeServiceIds_);
-      }
-      if (includeSubsliceIds_ != false) {
-        output.writeBool(5, includeSubsliceIds_);
-      }
-      if (includeConfigRules_ != false) {
-        output.writeBool(6, includeConfigRules_);
-      }
-      unknownFields.writeTo(output);
-    }
+        @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 int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (sliceIds_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSliceIds());
-      }
-      if (includeEndpointIds_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, includeEndpointIds_);
-      }
-      if (includeConstraints_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, includeConstraints_);
-      }
-      if (includeServiceIds_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, includeServiceIds_);
-      }
-      if (includeSubsliceIds_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(5, includeSubsliceIds_);
-      }
-      if (includeConfigRules_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(6, includeConfigRules_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (numDisjointPaths_ != 0) {
+                output.writeUInt32(1, numDisjointPaths_);
+            }
+            if (allActive_ != false) {
+                output.writeBool(2, allActive_);
+            }
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+                output.writeFloat(3, availability_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceFilter)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceFilter other = (context.ContextOuterClass.SliceFilter) obj;
-
-      if (hasSliceIds() != other.hasSliceIds()) return false;
-      if (hasSliceIds()) {
-        if (!getSliceIds()
-            .equals(other.getSliceIds())) return false;
-      }
-      if (getIncludeEndpointIds()
-          != other.getIncludeEndpointIds()) return false;
-      if (getIncludeConstraints()
-          != other.getIncludeConstraints()) return false;
-      if (getIncludeServiceIds()
-          != other.getIncludeServiceIds()) return false;
-      if (getIncludeSubsliceIds()
-          != other.getIncludeSubsliceIds()) return false;
-      if (getIncludeConfigRules()
-          != other.getIncludeConfigRules()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (numDisjointPaths_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, numDisjointPaths_);
+            }
+            if (allActive_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
+            }
+            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSliceIds()) {
-        hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceIds().hashCode();
-      }
-      hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeEndpointIds());
-      hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeConstraints());
-      hash = (37 * hash) + INCLUDE_SERVICE_IDS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeServiceIds());
-      hash = (37 * hash) + INCLUDE_SUBSLICE_IDS_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeSubsliceIds());
-      hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeConfigRules());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;
+            if (getNumDisjointPaths() != other.getNumDisjointPaths())
+                return false;
+            if (getAllActive() != other.getAllActive())
+                return false;
+            if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
+                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) + NUM_DISJOINT_PATHS_FIELD_NUMBER;
+            hash = (53 * hash) + getNumDisjointPaths();
+            hash = (37 * hash) + ALL_ACTIVE_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
+            hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceFilter parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceFilter prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceFilter}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceFilter)
-        context.ContextOuterClass.SliceFilterOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = null;
-        } else {
-          sliceIds_ = null;
-          sliceIdsBuilder_ = null;
-        }
-        includeEndpointIds_ = false;
-
-        includeConstraints_ = false;
-
-        includeServiceIds_ = false;
-
-        includeSubsliceIds_ = false;
-
-        includeConfigRules_ = false;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceFilter.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceFilter build() {
-        context.ContextOuterClass.SliceFilter result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceFilter buildPartial() {
-        context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
-        if (sliceIdsBuilder_ == null) {
-          result.sliceIds_ = sliceIds_;
-        } else {
-          result.sliceIds_ = sliceIdsBuilder_.build();
-        }
-        result.includeEndpointIds_ = includeEndpointIds_;
-        result.includeConstraints_ = includeConstraints_;
-        result.includeServiceIds_ = includeServiceIds_;
-        result.includeSubsliceIds_ = includeSubsliceIds_;
-        result.includeConfigRules_ = includeConfigRules_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceFilter) {
-          return mergeFrom((context.ContextOuterClass.SliceFilter)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceFilter other) {
-        if (other == context.ContextOuterClass.SliceFilter.getDefaultInstance()) return this;
-        if (other.hasSliceIds()) {
-          mergeSliceIds(other.getSliceIds());
-        }
-        if (other.getIncludeEndpointIds() != false) {
-          setIncludeEndpointIds(other.getIncludeEndpointIds());
-        }
-        if (other.getIncludeConstraints() != false) {
-          setIncludeConstraints(other.getIncludeConstraints());
-        }
-        if (other.getIncludeServiceIds() != false) {
-          setIncludeServiceIds(other.getIncludeServiceIds());
-        }
-        if (other.getIncludeSubsliceIds() != false) {
-          setIncludeSubsliceIds(other.getIncludeSubsliceIds());
-        }
-        if (other.getIncludeConfigRules() != false) {
-          setIncludeConfigRules(other.getIncludeConfigRules());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceFilter parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceFilter) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.SliceIdList sliceIds_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> sliceIdsBuilder_;
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       * @return Whether the sliceIds field is set.
-       */
-      public boolean hasSliceIds() {
-        return sliceIdsBuilder_ != null || sliceIds_ != null;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       * @return The sliceIds.
-       */
-      public context.ContextOuterClass.SliceIdList getSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
-        } else {
-          return sliceIdsBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder setSliceIds(context.ContextOuterClass.SliceIdList value) {
-        if (sliceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceIds_ = value;
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder setSliceIds(
-          context.ContextOuterClass.SliceIdList.Builder builderForValue) {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
-        if (sliceIdsBuilder_ == null) {
-          if (sliceIds_ != null) {
-            sliceIds_ =
-              context.ContextOuterClass.SliceIdList.newBuilder(sliceIds_).mergeFrom(value).buildPartial();
-          } else {
-            sliceIds_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public Builder clearSliceIds() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIds_ = null;
-          onChanged();
-        } else {
-          sliceIds_ = null;
-          sliceIdsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
-        
-        onChanged();
-        return getSliceIdsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
-        if (sliceIdsBuilder_ != null) {
-          return sliceIdsBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceIds_ == null ?
-              context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
-        }
-      }
-      /**
-       * <code>.context.SliceIdList slice_ids = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> 
-          getSliceIdsFieldBuilder() {
-        if (sliceIdsBuilder_ == null) {
-          sliceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder>(
-                  getSliceIds(),
-                  getParentForChildren(),
-                  isClean());
-          sliceIds_ = null;
-        }
-        return sliceIdsBuilder_;
-      }
-
-      private boolean includeEndpointIds_ ;
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return The includeEndpointIds.
-       */
-      @java.lang.Override
-      public boolean getIncludeEndpointIds() {
-        return includeEndpointIds_;
-      }
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @param value The includeEndpointIds to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeEndpointIds(boolean value) {
-        
-        includeEndpointIds_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_endpoint_ids = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeEndpointIds() {
-        
-        includeEndpointIds_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeConstraints_ ;
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @return The includeConstraints.
-       */
-      @java.lang.Override
-      public boolean getIncludeConstraints() {
-        return includeConstraints_;
-      }
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @param value The includeConstraints to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeConstraints(boolean value) {
-        
-        includeConstraints_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_constraints = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConstraints() {
-        
-        includeConstraints_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeServiceIds_ ;
-      /**
-       * <code>bool include_service_ids = 4;</code>
-       * @return The includeServiceIds.
-       */
-      @java.lang.Override
-      public boolean getIncludeServiceIds() {
-        return includeServiceIds_;
-      }
-      /**
-       * <code>bool include_service_ids = 4;</code>
-       * @param value The includeServiceIds to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeServiceIds(boolean value) {
-        
-        includeServiceIds_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_service_ids = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeServiceIds() {
-        
-        includeServiceIds_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeSubsliceIds_ ;
-      /**
-       * <code>bool include_subslice_ids = 5;</code>
-       * @return The includeSubsliceIds.
-       */
-      @java.lang.Override
-      public boolean getIncludeSubsliceIds() {
-        return includeSubsliceIds_;
-      }
-      /**
-       * <code>bool include_subslice_ids = 5;</code>
-       * @param value The includeSubsliceIds to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeSubsliceIds(boolean value) {
-        
-        includeSubsliceIds_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_subslice_ids = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeSubsliceIds() {
-        
-        includeSubsliceIds_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeConfigRules_ ;
-      /**
-       * <code>bool include_config_rules = 6;</code>
-       * @return The includeConfigRules.
-       */
-      @java.lang.Override
-      public boolean getIncludeConfigRules() {
-        return includeConfigRules_;
-      }
-      /**
-       * <code>bool include_config_rules = 6;</code>
-       * @param value The includeConfigRules to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeConfigRules(boolean value) {
-        
-        includeConfigRules_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool include_config_rules = 6;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeConfigRules() {
-        
-        includeConfigRules_ = false;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceFilter)
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.SliceFilter)
-    private static final context.ContextOuterClass.SliceFilter DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceFilter();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.SliceFilter getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    private static final com.google.protobuf.Parser<SliceFilter>
-        PARSER = new com.google.protobuf.AbstractParser<SliceFilter>() {
-      @java.lang.Override
-      public SliceFilter parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceFilter(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceFilter> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceFilter> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-  public interface SliceEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.SliceEvent)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return Whether the sliceId field is set.
-     */
-    boolean hasSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return The sliceId.
-     */
-    context.ContextOuterClass.SliceId getSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.SliceEvent}
-   */
-  public static final class SliceEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.SliceEvent)
-      SliceEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SliceEvent.newBuilder() to construct.
-    private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SliceEvent() {
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SliceEvent();
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SliceEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static final int SLICE_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.SliceId sliceId_;
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return Whether the sliceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     * @return The sliceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
-    }
+        /**
+         * Protobuf type {@code context.Constraint_SLA_Availability}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Availability)
+        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (sliceId_ != null) {
-        output.writeMessage(2, getSliceId());
-      }
-      unknownFields.writeTo(output);
-    }
+            // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (sliceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getSliceId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.SliceEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasSliceId() != other.hasSliceId()) return false;
-      if (hasSliceId()) {
-        if (!getSliceId()
-            .equals(other.getSliceId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                numDisjointPaths_ = 0;
+                allActive_ = false;
+                availability_ = 0F;
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasSliceId()) {
-        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
+            }
 
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.SliceEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.SliceEvent 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
+            public context.ContextOuterClass.Constraint_SLA_Availability build() {
+                context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.SliceEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.SliceEvent)
-        context.ContextOuterClass.SliceEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.SliceEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceEvent build() {
-        context.ContextOuterClass.SliceEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.SliceEvent buildPartial() {
-        context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
-        } else {
-          result.sliceId_ = sliceIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.SliceEvent) {
-          return mergeFrom((context.ContextOuterClass.SliceEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.SliceEvent other) {
-        if (other == context.ContextOuterClass.SliceEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasSliceId()) {
-          mergeSliceId(other.getSliceId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.SliceEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.SliceEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceId sliceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       * @return Whether the sliceId field is set.
-       */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       * @return The sliceId.
-       */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        } else {
-          return sliceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
-                  getParentForChildren(),
-                  isClean());
-          sliceId_ = null;
-        }
-        return sliceIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.SliceEvent)
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
+                context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.SliceEvent)
-    private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.numDisjointPaths_ = numDisjointPaths_;
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.allActive_ = allActive_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.availability_ = availability_;
+                }
+            }
 
-    public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_SLA_Availability) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    private static final com.google.protobuf.Parser<SliceEvent>
-        PARSER = new com.google.protobuf.AbstractParser<SliceEvent>() {
-      @java.lang.Override
-      public SliceEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SliceEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SliceEvent> parser() {
-      return PARSER;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Availability other) {
+                if (other == context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance())
+                    return this;
+                if (other.getNumDisjointPaths() != 0) {
+                    setNumDisjointPaths(other.getNumDisjointPaths());
+                }
+                if (other.getAllActive() != false) {
+                    setAllActive(other.getAllActive());
+                }
+                if (other.getAvailability() != 0F) {
+                    setAvailability(other.getAvailability());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SliceEvent> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @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:
+                                {
+                                    numDisjointPaths_ = input.readUInt32();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    allActive_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            case 29:
+                                {
+                                    availability_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-  }
+            private int bitField0_;
 
-  public interface ConnectionIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionId)
-      com.google.protobuf.MessageOrBuilder {
+            private int numDisjointPaths_;
 
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return Whether the connectionUuid field is set.
-     */
-    boolean hasConnectionUuid();
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return The connectionUuid.
-     */
-    context.ContextOuterClass.Uuid getConnectionUuid();
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Connection ----------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.ConnectionId}
-   */
-  public static final class ConnectionId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionId)
-      ConnectionIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionId.newBuilder() to construct.
-    private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionId() {
-    }
+            /**
+             * <code>uint32 num_disjoint_paths = 1;</code>
+             * @return The numDisjointPaths.
+             */
+            @java.lang.Override
+            public int getNumDisjointPaths() {
+                return numDisjointPaths_;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionId();
-    }
+            /**
+             * <code>uint32 num_disjoint_paths = 1;</code>
+             * @param value The numDisjointPaths to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNumDisjointPaths(int value) {
+                numDisjointPaths_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (connectionUuid_ != null) {
-                subBuilder = connectionUuid_.toBuilder();
-              }
-              connectionUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionUuid_);
-                connectionUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
-    }
+            /**
+             * <code>uint32 num_disjoint_paths = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearNumDisjointPaths() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                numDisjointPaths_ = 0;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
-    }
+            private boolean allActive_;
 
-    public static final int CONNECTION_UUID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid connectionUuid_;
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return Whether the connectionUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasConnectionUuid() {
-      return connectionUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     * @return The connectionUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getConnectionUuid() {
-      return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
-    }
-    /**
-     * <code>.context.Uuid connection_uuid = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-      return getConnectionUuid();
-    }
+            /**
+             * <code>bool all_active = 2;</code>
+             * @return The allActive.
+             */
+            @java.lang.Override
+            public boolean getAllActive() {
+                return allActive_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>bool all_active = 2;</code>
+             * @param value The allActive to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAllActive(boolean value) {
+                allActive_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>bool all_active = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAllActive() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                allActive_ = false;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (connectionUuid_ != null) {
-        output.writeMessage(1, getConnectionUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+            private float availability_;
+
+            /**
+             * <pre>
+             * 0.0 .. 100.0 percentage of availability
+             * </pre>
+             *
+             * <code>float availability = 3;</code>
+             * @return The availability.
+             */
+            @java.lang.Override
+            public float getAvailability() {
+                return availability_;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (connectionUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getConnectionUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <pre>
+             * 0.0 .. 100.0 percentage of availability
+             * </pre>
+             *
+             * <code>float availability = 3;</code>
+             * @param value The availability to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAvailability(float value) {
+                availability_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) obj;
-
-      if (hasConnectionUuid() != other.hasConnectionUuid()) return false;
-      if (hasConnectionUuid()) {
-        if (!getConnectionUuid()
-            .equals(other.getConnectionUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <pre>
+             * 0.0 .. 100.0 percentage of availability
+             * </pre>
+             *
+             * <code>float availability = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAvailability() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                availability_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasConnectionUuid()) {
-        hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Availability)
+        private static final context.ContextOuterClass.Constraint_SLA_Availability DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Connection ----------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.ConnectionId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionId)
-        context.ContextOuterClass.ConnectionIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = null;
-        } else {
-          connectionUuid_ = null;
-          connectionUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionId build() {
-        context.ContextOuterClass.ConnectionId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionId buildPartial() {
-        context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
-        if (connectionUuidBuilder_ == null) {
-          result.connectionUuid_ = connectionUuid_;
-        } else {
-          result.connectionUuid_ = connectionUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionId) {
-          return mergeFrom((context.ContextOuterClass.ConnectionId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionId other) {
-        if (other == context.ContextOuterClass.ConnectionId.getDefaultInstance()) return this;
-        if (other.hasConnectionUuid()) {
-          mergeConnectionUuid(other.getConnectionUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid connectionUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       * @return Whether the connectionUuid field is set.
-       */
-      public boolean hasConnectionUuid() {
-        return connectionUuidBuilder_ != null || connectionUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       * @return The connectionUuid.
-       */
-      public context.ContextOuterClass.Uuid getConnectionUuid() {
-        if (connectionUuidBuilder_ == null) {
-          return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
-        } else {
-          return connectionUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
-        if (connectionUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionUuid_ = value;
-          onChanged();
-        } else {
-          connectionUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public Builder setConnectionUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          connectionUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
-        if (connectionUuidBuilder_ == null) {
-          if (connectionUuid_ != null) {
-            connectionUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(connectionUuid_).mergeFrom(value).buildPartial();
-          } else {
-            connectionUuid_ = value;
-          }
-          onChanged();
-        } else {
-          connectionUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public Builder clearConnectionUuid() {
-        if (connectionUuidBuilder_ == null) {
-          connectionUuid_ = null;
-          onChanged();
-        } else {
-          connectionUuid_ = null;
-          connectionUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
-        
-        onChanged();
-        return getConnectionUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
-        if (connectionUuidBuilder_ != null) {
-          return connectionUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return connectionUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid connection_uuid = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getConnectionUuidFieldBuilder() {
-        if (connectionUuidBuilder_ == null) {
-          connectionUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getConnectionUuid(),
-                  getParentForChildren(),
-                  isClean());
-          connectionUuid_ = null;
-        }
-        return connectionUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionId)
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Availability();
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionId)
-    private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private static final com.google.protobuf.Parser<Constraint_SLA_Availability> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Availability>() {
 
-    private static final com.google.protobuf.Parser<ConnectionId>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionId>() {
-      @java.lang.Override
-      public ConnectionId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionId> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public Constraint_SLA_Availability 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();
+            }
+        };
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionId> getParserForType() {
-      return PARSER;
-    }
+        public static com.google.protobuf.Parser<Constraint_SLA_Availability> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_SLA_Availability> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-  }
+    public interface Constraint_SLA_Isolation_levelOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
+    com.google.protobuf.MessageOrBuilder {
 
-  public interface ConnectionSettings_L0OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return A list containing the isolationLevel.
+         */
+        java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList();
 
-    /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The lspSymbolicName.
-     */
-    java.lang.String getLspSymbolicName();
-    /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The bytes for lspSymbolicName.
-     */
-    com.google.protobuf.ByteString
-        getLspSymbolicNameBytes();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionSettings_L0}
-   */
-  public static final class ConnectionSettings_L0 extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
-      ConnectionSettings_L0OrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L0.newBuilder() to construct.
-    private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionSettings_L0() {
-      lspSymbolicName_ = "";
-    }
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return The count of isolationLevel.
+         */
+        int getIsolationLevelCount();
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L0();
-    }
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @param index The index of the element to return.
+         * @return The isolationLevel at the given index.
+         */
+        context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index);
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionSettings_L0(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              lspSymbolicName_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
-    }
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return A list containing the enum numeric values on the wire for isolationLevel.
+         */
+        java.util.List<java.lang.Integer> getIsolationLevelValueList();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of isolationLevel at the given index.
+         */
+        int getIsolationLevelValue(int index);
     }
 
-    public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;
-    private volatile java.lang.Object lspSymbolicName_;
-    /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The lspSymbolicName.
-     */
-    @java.lang.Override
-    public java.lang.String getLspSymbolicName() {
-      java.lang.Object ref = lspSymbolicName_;
-      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();
-        lspSymbolicName_ = s;
-        return s;
-      }
-    }
     /**
-     * <code>string lsp_symbolic_name = 1;</code>
-     * @return The bytes for lspSymbolicName.
+     * Protobuf type {@code context.Constraint_SLA_Isolation_level}
      */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getLspSymbolicNameBytes() {
-      java.lang.Object ref = lspSymbolicName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        lspSymbolicName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+    public static final class Constraint_SLA_Isolation_level extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
+    Constraint_SLA_Isolation_levelOrBuilder {
 
-    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;
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getLspSymbolicNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
-      }
-      unknownFields.writeTo(output);
-    }
+        // Use Constraint_SLA_Isolation_level.newBuilder() to construct.
+        private Constraint_SLA_Isolation_level(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getLspSymbolicNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private Constraint_SLA_Isolation_level() {
+            isolationLevel_ = java.util.Collections.emptyList();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L0)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
-
-      if (!getLspSymbolicName()
-          .equals(other.getLspSymbolicName())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_SLA_Isolation_level();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getLspSymbolicName().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
+        }
 
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionSettings_L0}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L0)
-        context.ContextOuterClass.ConnectionSettings_L0OrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        lspSymbolicName_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 build() {
-        context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
-        result.lspSymbolicName_ = lspSymbolicName_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings_L0) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L0)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L0 other) {
-        if (other == context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) return this;
-        if (!other.getLspSymbolicName().isEmpty()) {
-          lspSymbolicName_ = other.lspSymbolicName_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L0 parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L0) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object lspSymbolicName_ = "";
-      /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return The lspSymbolicName.
-       */
-      public java.lang.String getLspSymbolicName() {
-        java.lang.Object ref = lspSymbolicName_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          lspSymbolicName_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return The bytes for lspSymbolicName.
-       */
-      public com.google.protobuf.ByteString
-          getLspSymbolicNameBytes() {
-        java.lang.Object ref = lspSymbolicName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          lspSymbolicName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @param value The lspSymbolicName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLspSymbolicName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        lspSymbolicName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLspSymbolicName() {
-        
-        lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string lsp_symbolic_name = 1;</code>
-       * @param value The bytes for lspSymbolicName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLspSymbolicNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        lspSymbolicName_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
-    }
+        @SuppressWarnings("serial")
+        private java.util.List<java.lang.Integer> isolationLevel_;
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
-    private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
-    }
+        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {
 
-    public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
+                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
+                return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
+            }
+        };
+
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return A list containing the isolationLevel.
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
+            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
+        }
+
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return The count of isolationLevel.
+         */
+        @java.lang.Override
+        public int getIsolationLevelCount() {
+            return isolationLevel_.size();
+        }
+
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @param index The index of the element to return.
+         * @return The isolationLevel at the given index.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
+            return isolationLevel_converter_.convert(isolationLevel_.get(index));
+        }
+
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @return A list containing the enum numeric values on the wire for isolationLevel.
+         */
+        @java.lang.Override
+        public java.util.List<java.lang.Integer> getIsolationLevelValueList() {
+            return isolationLevel_;
+        }
+
+        /**
+         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+         * @param index The index of the value to return.
+         * @return The enum numeric value on the wire of isolationLevel at the given index.
+         */
+        @java.lang.Override
+        public int getIsolationLevelValue(int index) {
+            return isolationLevel_.get(index);
+        }
+
+        private int isolationLevelMemoizedSerializedSize;
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            getSerializedSize();
+            if (getIsolationLevelList().size() > 0) {
+                output.writeUInt32NoTag(10);
+                output.writeUInt32NoTag(isolationLevelMemoizedSerializedSize);
+            }
+            for (int i = 0; i < isolationLevel_.size(); i++) {
+                output.writeEnumNoTag(isolationLevel_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            {
+                int dataSize = 0;
+                for (int i = 0; i < isolationLevel_.size(); i++) {
+                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(isolationLevel_.get(i));
+                }
+                size += dataSize;
+                if (!getIsolationLevelList().isEmpty()) {
+                    size += 1;
+                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
+                }
+                isolationLevelMemoizedSerializedSize = dataSize;
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L0>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L0>() {
-      @java.lang.Override
-      public ConnectionSettings_L0 parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L0(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionSettings_L0> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
+            if (!isolationLevel_.equals(other.isolationLevel_))
+                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 (getIsolationLevelCount() > 0) {
+                hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
+                hash = (53 * hash) + isolationLevel_.hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L0> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  public interface ConnectionSettings_L2OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>string src_mac_address = 1;</code>
-     * @return The srcMacAddress.
-     */
-    java.lang.String getSrcMacAddress();
-    /**
-     * <code>string src_mac_address = 1;</code>
-     * @return The bytes for srcMacAddress.
-     */
-    com.google.protobuf.ByteString
-        getSrcMacAddressBytes();
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The dstMacAddress.
-     */
-    java.lang.String getDstMacAddress();
-    /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The bytes for dstMacAddress.
-     */
-    com.google.protobuf.ByteString
-        getDstMacAddressBytes();
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>uint32 ether_type = 3;</code>
-     * @return The etherType.
-     */
-    int getEtherType();
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>uint32 vlan_id = 4;</code>
-     * @return The vlanId.
-     */
-    int getVlanId();
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * <code>uint32 mpls_label = 5;</code>
-     * @return The mplsLabel.
-     */
-    int getMplsLabel();
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>uint32 mpls_traffic_class = 6;</code>
-     * @return The mplsTrafficClass.
-     */
-    int getMplsTrafficClass();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionSettings_L2}
-   */
-  public static final class ConnectionSettings_L2 extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
-      ConnectionSettings_L2OrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L2.newBuilder() to construct.
-    private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionSettings_L2() {
-      srcMacAddress_ = "";
-      dstMacAddress_ = "";
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L2();
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionSettings_L2(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              srcMacAddress_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              dstMacAddress_ = s;
-              break;
-            }
-            case 24: {
-
-              etherType_ = input.readUInt32();
-              break;
-            }
-            case 32: {
-
-              vlanId_ = input.readUInt32();
-              break;
-            }
-            case 40: {
-
-              mplsLabel_ = input.readUInt32();
-              break;
-            }
-            case 48: {
-
-              mplsTrafficClass_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;
-    private volatile java.lang.Object srcMacAddress_;
-    /**
-     * <code>string src_mac_address = 1;</code>
-     * @return The srcMacAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getSrcMacAddress() {
-      java.lang.Object ref = srcMacAddress_;
-      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();
-        srcMacAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string src_mac_address = 1;</code>
-     * @return The bytes for srcMacAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getSrcMacAddressBytes() {
-      java.lang.Object ref = srcMacAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        srcMacAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;
-    private volatile java.lang.Object dstMacAddress_;
-    /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The dstMacAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getDstMacAddress() {
-      java.lang.Object ref = dstMacAddress_;
-      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();
-        dstMacAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string dst_mac_address = 2;</code>
-     * @return The bytes for dstMacAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getDstMacAddressBytes() {
-      java.lang.Object ref = dstMacAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        dstMacAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static final int ETHER_TYPE_FIELD_NUMBER = 3;
-    private int etherType_;
-    /**
-     * <code>uint32 ether_type = 3;</code>
-     * @return The etherType.
-     */
-    @java.lang.Override
-    public int getEtherType() {
-      return etherType_;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static final int VLAN_ID_FIELD_NUMBER = 4;
-    private int vlanId_;
-    /**
-     * <code>uint32 vlan_id = 4;</code>
-     * @return The vlanId.
-     */
-    @java.lang.Override
-    public int getVlanId() {
-      return vlanId_;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static final int MPLS_LABEL_FIELD_NUMBER = 5;
-    private int mplsLabel_;
-    /**
-     * <code>uint32 mpls_label = 5;</code>
-     * @return The mplsLabel.
-     */
-    @java.lang.Override
-    public int getMplsLabel() {
-      return mplsLabel_;
-    }
+        /**
+         * Protobuf type {@code context.Constraint_SLA_Isolation_level}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Isolation_level)
+        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder {
 
-    public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;
-    private int mplsTrafficClass_;
-    /**
-     * <code>uint32 mpls_traffic_class = 6;</code>
-     * @return The mplsTrafficClass.
-     */
-    @java.lang.Override
-    public int getMplsTrafficClass() {
-      return mplsTrafficClass_;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getSrcMacAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
-      }
-      if (!getDstMacAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
-      }
-      if (etherType_ != 0) {
-        output.writeUInt32(3, etherType_);
-      }
-      if (vlanId_ != 0) {
-        output.writeUInt32(4, vlanId_);
-      }
-      if (mplsLabel_ != 0) {
-        output.writeUInt32(5, mplsLabel_);
-      }
-      if (mplsTrafficClass_ != 0) {
-        output.writeUInt32(6, mplsTrafficClass_);
-      }
-      unknownFields.writeTo(output);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getSrcMacAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
-      }
-      if (!getDstMacAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
-      }
-      if (etherType_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, etherType_);
-      }
-      if (vlanId_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(4, vlanId_);
-      }
-      if (mplsLabel_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(5, mplsLabel_);
-      }
-      if (mplsTrafficClass_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(6, mplsTrafficClass_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                isolationLevel_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L2)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) obj;
-
-      if (!getSrcMacAddress()
-          .equals(other.getSrcMacAddress())) return false;
-      if (!getDstMacAddress()
-          .equals(other.getDstMacAddress())) return false;
-      if (getEtherType()
-          != other.getEtherType()) return false;
-      if (getVlanId()
-          != other.getVlanId()) return false;
-      if (getMplsLabel()
-          != other.getMplsLabel()) return false;
-      if (getMplsTrafficClass()
-          != other.getMplsTrafficClass()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SRC_MAC_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getSrcMacAddress().hashCode();
-      hash = (37 * hash) + DST_MAC_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getDstMacAddress().hashCode();
-      hash = (37 * hash) + ETHER_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getEtherType();
-      hash = (37 * hash) + VLAN_ID_FIELD_NUMBER;
-      hash = (53 * hash) + getVlanId();
-      hash = (37 * hash) + MPLS_LABEL_FIELD_NUMBER;
-      hash = (53 * hash) + getMplsLabel();
-      hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
-      hash = (53 * hash) + getMplsTrafficClass();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+            }
 
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level build() {
+                context.ContextOuterClass.Constraint_SLA_Isolation_level result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 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
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
+                context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionSettings_L2}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L2)
-        context.ContextOuterClass.ConnectionSettings_L2OrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        srcMacAddress_ = "";
-
-        dstMacAddress_ = "";
-
-        etherType_ = 0;
-
-        vlanId_ = 0;
-
-        mplsLabel_ = 0;
-
-        mplsTrafficClass_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L2 build() {
-        context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
-        result.srcMacAddress_ = srcMacAddress_;
-        result.dstMacAddress_ = dstMacAddress_;
-        result.etherType_ = etherType_;
-        result.vlanId_ = vlanId_;
-        result.mplsLabel_ = mplsLabel_;
-        result.mplsTrafficClass_ = mplsTrafficClass_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings_L2) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L2)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L2 other) {
-        if (other == context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) return this;
-        if (!other.getSrcMacAddress().isEmpty()) {
-          srcMacAddress_ = other.srcMacAddress_;
-          onChanged();
-        }
-        if (!other.getDstMacAddress().isEmpty()) {
-          dstMacAddress_ = other.dstMacAddress_;
-          onChanged();
-        }
-        if (other.getEtherType() != 0) {
-          setEtherType(other.getEtherType());
-        }
-        if (other.getVlanId() != 0) {
-          setVlanId(other.getVlanId());
-        }
-        if (other.getMplsLabel() != 0) {
-          setMplsLabel(other.getMplsLabel());
-        }
-        if (other.getMplsTrafficClass() != 0) {
-          setMplsTrafficClass(other.getMplsTrafficClass());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L2 parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L2) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object srcMacAddress_ = "";
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @return The srcMacAddress.
-       */
-      public java.lang.String getSrcMacAddress() {
-        java.lang.Object ref = srcMacAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          srcMacAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @return The bytes for srcMacAddress.
-       */
-      public com.google.protobuf.ByteString
-          getSrcMacAddressBytes() {
-        java.lang.Object ref = srcMacAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          srcMacAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @param value The srcMacAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcMacAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        srcMacAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcMacAddress() {
-        
-        srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_mac_address = 1;</code>
-       * @param value The bytes for srcMacAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcMacAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        srcMacAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object dstMacAddress_ = "";
-      /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return The dstMacAddress.
-       */
-      public java.lang.String getDstMacAddress() {
-        java.lang.Object ref = dstMacAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          dstMacAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return The bytes for dstMacAddress.
-       */
-      public com.google.protobuf.ByteString
-          getDstMacAddressBytes() {
-        java.lang.Object ref = dstMacAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          dstMacAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string dst_mac_address = 2;</code>
-       * @param value The dstMacAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstMacAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        dstMacAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_mac_address = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstMacAddress() {
-        
-        dstMacAddress_ = getDefaultInstance().getDstMacAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_mac_address = 2;</code>
-       * @param value The bytes for dstMacAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstMacAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        dstMacAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int etherType_ ;
-      /**
-       * <code>uint32 ether_type = 3;</code>
-       * @return The etherType.
-       */
-      @java.lang.Override
-      public int getEtherType() {
-        return etherType_;
-      }
-      /**
-       * <code>uint32 ether_type = 3;</code>
-       * @param value The etherType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEtherType(int value) {
-        
-        etherType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 ether_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEtherType() {
-        
-        etherType_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int vlanId_ ;
-      /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @return The vlanId.
-       */
-      @java.lang.Override
-      public int getVlanId() {
-        return vlanId_;
-      }
-      /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @param value The vlanId to set.
-       * @return This builder for chaining.
-       */
-      public Builder setVlanId(int value) {
-        
-        vlanId_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 vlan_id = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearVlanId() {
-        
-        vlanId_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int mplsLabel_ ;
-      /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @return The mplsLabel.
-       */
-      @java.lang.Override
-      public int getMplsLabel() {
-        return mplsLabel_;
-      }
-      /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @param value The mplsLabel to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMplsLabel(int value) {
-        
-        mplsLabel_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 mpls_label = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMplsLabel() {
-        
-        mplsLabel_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int mplsTrafficClass_ ;
-      /**
-       * <code>uint32 mpls_traffic_class = 6;</code>
-       * @return The mplsTrafficClass.
-       */
-      @java.lang.Override
-      public int getMplsTrafficClass() {
-        return mplsTrafficClass_;
-      }
-      /**
-       * <code>uint32 mpls_traffic_class = 6;</code>
-       * @param value The mplsTrafficClass to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMplsTrafficClass(int value) {
-        
-        mplsTrafficClass_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 mpls_traffic_class = 6;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMplsTrafficClass() {
-        
-        mplsTrafficClass_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
-    }
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                if (((bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                }
+                result.isolationLevel_ = isolationLevel_;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
-    private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
+                int from_bitField0_ = bitField0_;
+            }
 
-    public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L2>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L2>() {
-      @java.lang.Override
-      public ConnectionSettings_L2 parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L2(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionSettings_L2> parser() {
-      return PARSER;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Isolation_level other) {
+                if (other == context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance())
+                    return this;
+                if (!other.isolationLevel_.isEmpty()) {
+                    if (isolationLevel_.isEmpty()) {
+                        isolationLevel_ = other.isolationLevel_;
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    } else {
+                        ensureIsolationLevelIsMutable();
+                        isolationLevel_.addAll(other.isolationLevel_);
+                    }
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L2> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @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:
+                                {
+                                    int tmpRaw = input.readEnum();
+                                    ensureIsolationLevelIsMutable();
+                                    isolationLevel_.add(tmpRaw);
+                                    break;
+                                }
+                            // case 8
+                            case 10:
+                                {
+                                    int length = input.readRawVarint32();
+                                    int oldLimit = input.pushLimit(length);
+                                    while (input.getBytesUntilLimit() > 0) {
+                                        int tmpRaw = input.readEnum();
+                                        ensureIsolationLevelIsMutable();
+                                        isolationLevel_.add(tmpRaw);
+                                    }
+                                    input.popLimit(oldLimit);
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-  }
+            private int bitField0_;
 
-  public interface ConnectionSettings_L3OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
-      com.google.protobuf.MessageOrBuilder {
+            private java.util.List<java.lang.Integer> isolationLevel_ = java.util.Collections.emptyList();
 
-    /**
-     * <code>string src_ip_address = 1;</code>
-     * @return The srcIpAddress.
-     */
-    java.lang.String getSrcIpAddress();
-    /**
-     * <code>string src_ip_address = 1;</code>
-     * @return The bytes for srcIpAddress.
-     */
-    com.google.protobuf.ByteString
-        getSrcIpAddressBytes();
+            private void ensureIsolationLevelIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    isolationLevel_ = new java.util.ArrayList<java.lang.Integer>(isolationLevel_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
 
-    /**
-     * <code>string dst_ip_address = 2;</code>
-     * @return The dstIpAddress.
-     */
-    java.lang.String getDstIpAddress();
-    /**
-     * <code>string dst_ip_address = 2;</code>
-     * @return The bytes for dstIpAddress.
-     */
-    com.google.protobuf.ByteString
-        getDstIpAddressBytes();
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @return A list containing the isolationLevel.
+             */
+            public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
+                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
+            }
 
-    /**
-     * <code>uint32 dscp = 3;</code>
-     * @return The dscp.
-     */
-    int getDscp();
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @return The count of isolationLevel.
+             */
+            public int getIsolationLevelCount() {
+                return isolationLevel_.size();
+            }
 
-    /**
-     * <code>uint32 protocol = 4;</code>
-     * @return The protocol.
-     */
-    int getProtocol();
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param index The index of the element to return.
+             * @return The isolationLevel at the given index.
+             */
+            public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
+                return isolationLevel_converter_.convert(isolationLevel_.get(index));
+            }
 
-    /**
-     * <code>uint32 ttl = 5;</code>
-     * @return The ttl.
-     */
-    int getTtl();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionSettings_L3}
-   */
-  public static final class ConnectionSettings_L3 extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
-      ConnectionSettings_L3OrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L3.newBuilder() to construct.
-    private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionSettings_L3() {
-      srcIpAddress_ = "";
-      dstIpAddress_ = "";
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param index The index to set the value at.
+             * @param value The isolationLevel to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIsolationLevel(int index, context.ContextOuterClass.IsolationLevelEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureIsolationLevelIsMutable();
+                isolationLevel_.set(index, value.getNumber());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L3();
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param value The isolationLevel to add.
+             * @return This builder for chaining.
+             */
+            public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureIsolationLevelIsMutable();
+                isolationLevel_.add(value.getNumber());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionSettings_L3(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              srcIpAddress_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              dstIpAddress_ = s;
-              break;
-            }
-            case 24: {
-
-              dscp_ = input.readUInt32();
-              break;
-            }
-            case 32: {
-
-              protocol_ = input.readUInt32();
-              break;
-            }
-            case 40: {
-
-              ttl_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param values The isolationLevel to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllIsolationLevel(java.lang.Iterable<? extends context.ContextOuterClass.IsolationLevelEnum> values) {
+                ensureIsolationLevelIsMutable();
+                for (context.ContextOuterClass.IsolationLevelEnum value : values) {
+                    isolationLevel_.add(value.getNumber());
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIsolationLevel() {
+                isolationLevel_ = java.util.Collections.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                onChanged();
+                return this;
+            }
 
-    public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;
-    private volatile java.lang.Object srcIpAddress_;
-    /**
-     * <code>string src_ip_address = 1;</code>
-     * @return The srcIpAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getSrcIpAddress() {
-      java.lang.Object ref = srcIpAddress_;
-      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();
-        srcIpAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string src_ip_address = 1;</code>
-     * @return The bytes for srcIpAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getSrcIpAddressBytes() {
-      java.lang.Object ref = srcIpAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        srcIpAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @return A list containing the enum numeric values on the wire for isolationLevel.
+             */
+            public java.util.List<java.lang.Integer> getIsolationLevelValueList() {
+                return java.util.Collections.unmodifiableList(isolationLevel_);
+            }
 
-    public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;
-    private volatile java.lang.Object dstIpAddress_;
-    /**
-     * <code>string dst_ip_address = 2;</code>
-     * @return The dstIpAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getDstIpAddress() {
-      java.lang.Object ref = dstIpAddress_;
-      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();
-        dstIpAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string dst_ip_address = 2;</code>
-     * @return The bytes for dstIpAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getDstIpAddressBytes() {
-      java.lang.Object ref = dstIpAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        dstIpAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param index The index of the value to return.
+             * @return The enum numeric value on the wire of isolationLevel at the given index.
+             */
+            public int getIsolationLevelValue(int index) {
+                return isolationLevel_.get(index);
+            }
 
-    public static final int DSCP_FIELD_NUMBER = 3;
-    private int dscp_;
-    /**
-     * <code>uint32 dscp = 3;</code>
-     * @return The dscp.
-     */
-    @java.lang.Override
-    public int getDscp() {
-      return dscp_;
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param index The index to set the value at.
+             * @param value The enum numeric value on the wire for isolationLevel to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIsolationLevelValue(int index, int value) {
+                ensureIsolationLevelIsMutable();
+                isolationLevel_.set(index, value);
+                onChanged();
+                return this;
+            }
 
-    public static final int PROTOCOL_FIELD_NUMBER = 4;
-    private int protocol_;
-    /**
-     * <code>uint32 protocol = 4;</code>
-     * @return The protocol.
-     */
-    @java.lang.Override
-    public int getProtocol() {
-      return protocol_;
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param value The enum numeric value on the wire for isolationLevel to add.
+             * @return This builder for chaining.
+             */
+            public Builder addIsolationLevelValue(int value) {
+                ensureIsolationLevelIsMutable();
+                isolationLevel_.add(value);
+                onChanged();
+                return this;
+            }
 
-    public static final int TTL_FIELD_NUMBER = 5;
-    private int ttl_;
-    /**
-     * <code>uint32 ttl = 5;</code>
-     * @return The ttl.
-     */
-    @java.lang.Override
-    public int getTtl() {
-      return ttl_;
-    }
+            /**
+             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
+             * @param values The enum numeric values on the wire for isolationLevel to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllIsolationLevelValue(java.lang.Iterable<java.lang.Integer> values) {
+                ensureIsolationLevelIsMutable();
+                for (int value : values) {
+                    isolationLevel_.add(value);
+                }
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getSrcIpAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
-      }
-      if (!getDstIpAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
-      }
-      if (dscp_ != 0) {
-        output.writeUInt32(3, dscp_);
-      }
-      if (protocol_ != 0) {
-        output.writeUInt32(4, protocol_);
-      }
-      if (ttl_ != 0) {
-        output.writeUInt32(5, ttl_);
-      }
-      unknownFields.writeTo(output);
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Isolation_level)
+        private static final context.ContextOuterClass.Constraint_SLA_Isolation_level DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getSrcIpAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
-      }
-      if (!getDstIpAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
-      }
-      if (dscp_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, dscp_);
-      }
-      if (protocol_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(4, protocol_);
-      }
-      if (ttl_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(5, ttl_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Isolation_level();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L3)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) obj;
-
-      if (!getSrcIpAddress()
-          .equals(other.getSrcIpAddress())) return false;
-      if (!getDstIpAddress()
-          .equals(other.getDstIpAddress())) return false;
-      if (getDscp()
-          != other.getDscp()) return false;
-      if (getProtocol()
-          != other.getProtocol()) return false;
-      if (getTtl()
-          != other.getTtl()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SRC_IP_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getSrcIpAddress().hashCode();
-      hash = (37 * hash) + DST_IP_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getDstIpAddress().hashCode();
-      hash = (37 * hash) + DSCP_FIELD_NUMBER;
-      hash = (53 * hash) + getDscp();
-      hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
-      hash = (53 * hash) + getProtocol();
-      hash = (37 * hash) + TTL_FIELD_NUMBER;
-      hash = (53 * hash) + getTtl();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private static final com.google.protobuf.Parser<Constraint_SLA_Isolation_level> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Isolation_level>() {
 
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public Constraint_SLA_Isolation_level 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();
+            }
+        };
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static com.google.protobuf.Parser<Constraint_SLA_Isolation_level> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionSettings_L3}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L3)
-        context.ContextOuterClass.ConnectionSettings_L3OrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        srcIpAddress_ = "";
-
-        dstIpAddress_ = "";
-
-        dscp_ = 0;
-
-        protocol_ = 0;
-
-        ttl_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 build() {
-        context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
-        result.srcIpAddress_ = srcIpAddress_;
-        result.dstIpAddress_ = dstIpAddress_;
-        result.dscp_ = dscp_;
-        result.protocol_ = protocol_;
-        result.ttl_ = ttl_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings_L3) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L3)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L3 other) {
-        if (other == context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) return this;
-        if (!other.getSrcIpAddress().isEmpty()) {
-          srcIpAddress_ = other.srcIpAddress_;
-          onChanged();
-        }
-        if (!other.getDstIpAddress().isEmpty()) {
-          dstIpAddress_ = other.dstIpAddress_;
-          onChanged();
-        }
-        if (other.getDscp() != 0) {
-          setDscp(other.getDscp());
-        }
-        if (other.getProtocol() != 0) {
-          setProtocol(other.getProtocol());
-        }
-        if (other.getTtl() != 0) {
-          setTtl(other.getTtl());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L3 parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L3) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object srcIpAddress_ = "";
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @return The srcIpAddress.
-       */
-      public java.lang.String getSrcIpAddress() {
-        java.lang.Object ref = srcIpAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          srcIpAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @return The bytes for srcIpAddress.
-       */
-      public com.google.protobuf.ByteString
-          getSrcIpAddressBytes() {
-        java.lang.Object ref = srcIpAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          srcIpAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @param value The srcIpAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcIpAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        srcIpAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcIpAddress() {
-        
-        srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string src_ip_address = 1;</code>
-       * @param value The bytes for srcIpAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcIpAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        srcIpAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object dstIpAddress_ = "";
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return The dstIpAddress.
-       */
-      public java.lang.String getDstIpAddress() {
-        java.lang.Object ref = dstIpAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          dstIpAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return The bytes for dstIpAddress.
-       */
-      public com.google.protobuf.ByteString
-          getDstIpAddressBytes() {
-        java.lang.Object ref = dstIpAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          dstIpAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @param value The dstIpAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstIpAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        dstIpAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstIpAddress() {
-        
-        dstIpAddress_ = getDefaultInstance().getDstIpAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string dst_ip_address = 2;</code>
-       * @param value The bytes for dstIpAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstIpAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        dstIpAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int dscp_ ;
-      /**
-       * <code>uint32 dscp = 3;</code>
-       * @return The dscp.
-       */
-      @java.lang.Override
-      public int getDscp() {
-        return dscp_;
-      }
-      /**
-       * <code>uint32 dscp = 3;</code>
-       * @param value The dscp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDscp(int value) {
-        
-        dscp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 dscp = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDscp() {
-        
-        dscp_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int protocol_ ;
-      /**
-       * <code>uint32 protocol = 4;</code>
-       * @return The protocol.
-       */
-      @java.lang.Override
-      public int getProtocol() {
-        return protocol_;
-      }
-      /**
-       * <code>uint32 protocol = 4;</code>
-       * @param value The protocol to set.
-       * @return This builder for chaining.
-       */
-      public Builder setProtocol(int value) {
-        
-        protocol_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 protocol = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearProtocol() {
-        
-        protocol_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int ttl_ ;
-      /**
-       * <code>uint32 ttl = 5;</code>
-       * @return The ttl.
-       */
-      @java.lang.Override
-      public int getTtl() {
-        return ttl_;
-      }
-      /**
-       * <code>uint32 ttl = 5;</code>
-       * @param value The ttl to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTtl(int value) {
-        
-        ttl_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 ttl = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTtl() {
-        
-        ttl_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L3)
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_SLA_Isolation_level> getParserForType() {
+            return PARSER;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L3)
-    private static final context.ContextOuterClass.ConnectionSettings_L3 DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L3();
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    public interface Constraint_ExclusionsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Exclusions)
+    com.google.protobuf.MessageOrBuilder {
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L3>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L3>() {
-      @java.lang.Override
-      public ConnectionSettings_L3 parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L3(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionSettings_L3> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>bool is_permanent = 1;</code>
+         * @return The isPermanent.
+         */
+        boolean getIsPermanent();
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L3> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        context.ContextOuterClass.DeviceId getDeviceIds(int index);
 
-  }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        int getDeviceIdsCount();
 
-  public interface ConnectionSettings_L4OrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L4)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();
 
-    /**
-     * <code>uint32 src_port = 1;</code>
-     * @return The srcPort.
-     */
-    int getSrcPort();
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);
 
-    /**
-     * <code>uint32 dst_port = 2;</code>
-     * @return The dstPort.
-     */
-    int getDstPort();
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList();
 
-    /**
-     * <code>uint32 tcp_flags = 3;</code>
-     * @return The tcpFlags.
-     */
-    int getTcpFlags();
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointId getEndpointIds(int index);
 
-    /**
-     * <code>uint32 ttl = 4;</code>
-     * @return The ttl.
-     */
-    int getTtl();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionSettings_L4}
-   */
-  public static final class ConnectionSettings_L4 extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L4)
-      ConnectionSettings_L4OrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings_L4.newBuilder() to construct.
-    private ConnectionSettings_L4(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionSettings_L4() {
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        int getEndpointIdsCount();
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionSettings_L4();
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList();
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionSettings_L4(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              srcPort_ = input.readUInt32();
-              break;
-            }
-            case 16: {
-
-              dstPort_ = input.readUInt32();
-              break;
-            }
-            case 24: {
-
-              tcpFlags_ = input.readUInt32();
-              break;
-            }
-            case 32: {
-
-              ttl_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index);
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();
 
-    public static final int SRC_PORT_FIELD_NUMBER = 1;
-    private int srcPort_;
-    /**
-     * <code>uint32 src_port = 1;</code>
-     * @return The srcPort.
-     */
-    @java.lang.Override
-    public int getSrcPort() {
-      return srcPort_;
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        context.ContextOuterClass.LinkId getLinkIds(int index);
 
-    public static final int DST_PORT_FIELD_NUMBER = 2;
-    private int dstPort_;
-    /**
-     * <code>uint32 dst_port = 2;</code>
-     * @return The dstPort.
-     */
-    @java.lang.Override
-    public int getDstPort() {
-      return dstPort_;
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        int getLinkIdsCount();
 
-    public static final int TCP_FLAGS_FIELD_NUMBER = 3;
-    private int tcpFlags_;
-    /**
-     * <code>uint32 tcp_flags = 3;</code>
-     * @return The tcpFlags.
-     */
-    @java.lang.Override
-    public int getTcpFlags() {
-      return tcpFlags_;
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();
+
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);
     }
 
-    public static final int TTL_FIELD_NUMBER = 4;
-    private int ttl_;
     /**
-     * <code>uint32 ttl = 4;</code>
-     * @return The ttl.
+     * Protobuf type {@code context.Constraint_Exclusions}
      */
-    @java.lang.Override
-    public int getTtl() {
-      return ttl_;
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    public static final class Constraint_Exclusions extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Exclusions)
+    Constraint_ExclusionsOrBuilder {
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (srcPort_ != 0) {
-        output.writeUInt32(1, srcPort_);
-      }
-      if (dstPort_ != 0) {
-        output.writeUInt32(2, dstPort_);
-      }
-      if (tcpFlags_ != 0) {
-        output.writeUInt32(3, tcpFlags_);
-      }
-      if (ttl_ != 0) {
-        output.writeUInt32(4, ttl_);
-      }
-      unknownFields.writeTo(output);
-    }
+        // Use Constraint_Exclusions.newBuilder() to construct.
+        private Constraint_Exclusions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (srcPort_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(1, srcPort_);
-      }
-      if (dstPort_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(2, dstPort_);
-      }
-      if (tcpFlags_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, tcpFlags_);
-      }
-      if (ttl_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(4, ttl_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        private Constraint_Exclusions() {
+            deviceIds_ = java.util.Collections.emptyList();
+            endpointIds_ = java.util.Collections.emptyList();
+            linkIds_ = java.util.Collections.emptyList();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L4)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionSettings_L4 other = (context.ContextOuterClass.ConnectionSettings_L4) obj;
-
-      if (getSrcPort()
-          != other.getSrcPort()) return false;
-      if (getDstPort()
-          != other.getDstPort()) return false;
-      if (getTcpFlags()
-          != other.getTcpFlags()) return false;
-      if (getTtl()
-          != other.getTtl()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint_Exclusions();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
-      hash = (53 * hash) + getSrcPort();
-      hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
-      hash = (53 * hash) + getDstPort();
-      hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER;
-      hash = (53 * hash) + getTcpFlags();
-      hash = (37 * hash) + TTL_FIELD_NUMBER;
-      hash = (53 * hash) + getTtl();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
+        }
 
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.Builder.class);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L4 prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static final int IS_PERMANENT_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionSettings_L4}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L4)
-        context.ContextOuterClass.ConnectionSettings_L4OrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        srcPort_ = 0;
-
-        dstPort_ = 0;
-
-        tcpFlags_ = 0;
-
-        ttl_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 build() {
-        context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
-        context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
-        result.srcPort_ = srcPort_;
-        result.dstPort_ = dstPort_;
-        result.tcpFlags_ = tcpFlags_;
-        result.ttl_ = ttl_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings_L4) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings_L4)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L4 other) {
-        if (other == context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) return this;
-        if (other.getSrcPort() != 0) {
-          setSrcPort(other.getSrcPort());
-        }
-        if (other.getDstPort() != 0) {
-          setDstPort(other.getDstPort());
-        }
-        if (other.getTcpFlags() != 0) {
-          setTcpFlags(other.getTcpFlags());
-        }
-        if (other.getTtl() != 0) {
-          setTtl(other.getTtl());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings_L4 parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings_L4) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int srcPort_ ;
-      /**
-       * <code>uint32 src_port = 1;</code>
-       * @return The srcPort.
-       */
-      @java.lang.Override
-      public int getSrcPort() {
-        return srcPort_;
-      }
-      /**
-       * <code>uint32 src_port = 1;</code>
-       * @param value The srcPort to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSrcPort(int value) {
-        
-        srcPort_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 src_port = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSrcPort() {
-        
-        srcPort_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int dstPort_ ;
-      /**
-       * <code>uint32 dst_port = 2;</code>
-       * @return The dstPort.
-       */
-      @java.lang.Override
-      public int getDstPort() {
-        return dstPort_;
-      }
-      /**
-       * <code>uint32 dst_port = 2;</code>
-       * @param value The dstPort to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDstPort(int value) {
-        
-        dstPort_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 dst_port = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDstPort() {
-        
-        dstPort_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int tcpFlags_ ;
-      /**
-       * <code>uint32 tcp_flags = 3;</code>
-       * @return The tcpFlags.
-       */
-      @java.lang.Override
-      public int getTcpFlags() {
-        return tcpFlags_;
-      }
-      /**
-       * <code>uint32 tcp_flags = 3;</code>
-       * @param value The tcpFlags to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTcpFlags(int value) {
-        
-        tcpFlags_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 tcp_flags = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTcpFlags() {
-        
-        tcpFlags_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private int ttl_ ;
-      /**
-       * <code>uint32 ttl = 4;</code>
-       * @return The ttl.
-       */
-      @java.lang.Override
-      public int getTtl() {
-        return ttl_;
-      }
-      /**
-       * <code>uint32 ttl = 4;</code>
-       * @param value The ttl to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTtl(int value) {
-        
-        ttl_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 ttl = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearTtl() {
-        
-        ttl_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
-    }
+        private boolean isPermanent_ = false;
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
-    private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
-    }
+        /**
+         * <code>bool is_permanent = 1;</code>
+         * @return The isPermanent.
+         */
+        @java.lang.Override
+        public boolean getIsPermanent() {
+            return isPermanent_;
+        }
 
-    public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int DEVICE_IDS_FIELD_NUMBER = 2;
 
-    private static final com.google.protobuf.Parser<ConnectionSettings_L4>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L4>() {
-      @java.lang.Override
-      public ConnectionSettings_L4 parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings_L4(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionSettings_L4> parser() {
-      return PARSER;
-    }
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings_L4> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+            return deviceIds_;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+            return deviceIds_;
+        }
 
-  }
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        @java.lang.Override
+        public int getDeviceIdsCount() {
+            return deviceIds_.size();
+        }
 
-  public interface ConnectionSettingsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+            return deviceIds_.get(index);
+        }
 
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     * @return Whether the l0 field is set.
-     */
-    boolean hasL0();
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     * @return The l0.
-     */
-    context.ContextOuterClass.ConnectionSettings_L0 getL0();
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     */
-    context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();
+        /**
+         * <code>repeated .context.DeviceId device_ids = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+            return deviceIds_.get(index);
+        }
 
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     * @return Whether the l2 field is set.
-     */
-    boolean hasL2();
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     * @return The l2.
-     */
-    context.ContextOuterClass.ConnectionSettings_L2 getL2();
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     */
-    context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder();
+        public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
 
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     * @return Whether the l3 field is set.
-     */
-    boolean hasL3();
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     * @return The l3.
-     */
-    context.ContextOuterClass.ConnectionSettings_L3 getL3();
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     */
-    context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder();
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
 
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return Whether the l4 field is set.
-     */
-    boolean hasL4();
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return The l4.
-     */
-    context.ContextOuterClass.ConnectionSettings_L4 getL4();
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     */
-    context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionSettings}
-   */
-  public static final class ConnectionSettings extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
-      ConnectionSettingsOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionSettings.newBuilder() to construct.
-    private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionSettings() {
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
+            return endpointIds_;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionSettings();
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
+            return endpointIds_;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionSettings(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ConnectionSettings_L0.Builder subBuilder = null;
-              if (l0_ != null) {
-                subBuilder = l0_.toBuilder();
-              }
-              l0_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L0.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l0_);
-                l0_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ConnectionSettings_L2.Builder subBuilder = null;
-              if (l2_ != null) {
-                subBuilder = l2_.toBuilder();
-              }
-              l2_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L2.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l2_);
-                l2_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.ConnectionSettings_L3.Builder subBuilder = null;
-              if (l3_ != null) {
-                subBuilder = l3_.toBuilder();
-              }
-              l3_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L3.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l3_);
-                l3_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.ConnectionSettings_L4.Builder subBuilder = null;
-              if (l4_ != null) {
-                subBuilder = l4_.toBuilder();
-              }
-              l4_ = input.readMessage(context.ContextOuterClass.ConnectionSettings_L4.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(l4_);
-                l4_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public int getEndpointIdsCount() {
+            return endpointIds_.size();
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
+            return endpointIds_.get(index);
+        }
 
-    public static final int L0_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ConnectionSettings_L0 l0_;
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     * @return Whether the l0 field is set.
-     */
-    @java.lang.Override
-    public boolean hasL0() {
-      return l0_ != null;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     * @return The l0.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
-      return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-      return getL0();
-    }
+        /**
+         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
+            return endpointIds_.get(index);
+        }
 
-    public static final int L2_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.ConnectionSettings_L2 l2_;
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     * @return Whether the l2 field is set.
-     */
-    @java.lang.Override
-    public boolean hasL2() {
-      return l2_ != null;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     * @return The l2.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
-      return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-      return getL2();
-    }
+        public static final int LINK_IDS_FIELD_NUMBER = 4;
 
-    public static final int L3_FIELD_NUMBER = 3;
-    private context.ContextOuterClass.ConnectionSettings_L3 l3_;
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     * @return Whether the l3 field is set.
-     */
-    @java.lang.Override
-    public boolean hasL3() {
-      return l3_ != null;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     * @return The l3.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
-      return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-      return getL3();
-    }
+        @SuppressWarnings("serial")
+        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
 
-    public static final int L4_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.ConnectionSettings_L4 l4_;
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return Whether the l4 field is set.
-     */
-    @java.lang.Override
-    public boolean hasL4() {
-      return l4_ != null;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     * @return The l4.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
-      return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
-    }
-    /**
-     * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-      return getL4();
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+            return linkIds_;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+            return linkIds_;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public int getLinkIdsCount() {
+            return linkIds_.size();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (l0_ != null) {
-        output.writeMessage(1, getL0());
-      }
-      if (l2_ != null) {
-        output.writeMessage(2, getL2());
-      }
-      if (l3_ != null) {
-        output.writeMessage(3, getL3());
-      }
-      if (l4_ != null) {
-        output.writeMessage(4, getL4());
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkIds(int index) {
+            return linkIds_.get(index);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (l0_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getL0());
-      }
-      if (l2_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getL2());
-      }
-      if (l3_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getL3());
-      }
-      if (l4_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getL4());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>repeated .context.LinkId link_ids = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+            return linkIds_.get(index);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionSettings)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;
-
-      if (hasL0() != other.hasL0()) return false;
-      if (hasL0()) {
-        if (!getL0()
-            .equals(other.getL0())) return false;
-      }
-      if (hasL2() != other.hasL2()) return false;
-      if (hasL2()) {
-        if (!getL2()
-            .equals(other.getL2())) return false;
-      }
-      if (hasL3() != other.hasL3()) return false;
-      if (hasL3()) {
-        if (!getL3()
-            .equals(other.getL3())) return false;
-      }
-      if (hasL4() != other.hasL4()) return false;
-      if (hasL4()) {
-        if (!getL4()
-            .equals(other.getL4())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasL0()) {
-        hash = (37 * hash) + L0_FIELD_NUMBER;
-        hash = (53 * hash) + getL0().hashCode();
-      }
-      if (hasL2()) {
-        hash = (37 * hash) + L2_FIELD_NUMBER;
-        hash = (53 * hash) + getL2().hashCode();
-      }
-      if (hasL3()) {
-        hash = (37 * hash) + L3_FIELD_NUMBER;
-        hash = (53 * hash) + getL3().hashCode();
-      }
-      if (hasL4()) {
-        hash = (37 * hash) + L4_FIELD_NUMBER;
-        hash = (53 * hash) + getL4().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionSettings parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (isPermanent_ != false) {
+                output.writeBool(1, isPermanent_);
+            }
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                output.writeMessage(2, deviceIds_.get(i));
+            }
+            for (int i = 0; i < endpointIds_.size(); i++) {
+                output.writeMessage(3, endpointIds_.get(i));
+            }
+            for (int i = 0; i < linkIds_.size(); i++) {
+                output.writeMessage(4, linkIds_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings 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
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (isPermanent_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(1, isPermanent_);
+            }
+            for (int i = 0; i < deviceIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, deviceIds_.get(i));
+            }
+            for (int i = 0; i < endpointIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, endpointIds_.get(i));
+            }
+            for (int i = 0; i < linkIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionSettings}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionSettings)
-        context.ContextOuterClass.ConnectionSettingsOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (l0Builder_ == null) {
-          l0_ = null;
-        } else {
-          l0_ = null;
-          l0Builder_ = null;
-        }
-        if (l2Builder_ == null) {
-          l2_ = null;
-        } else {
-          l2_ = null;
-          l2Builder_ = null;
-        }
-        if (l3Builder_ == null) {
-          l3_ = null;
-        } else {
-          l3_ = null;
-          l3Builder_ = null;
-        }
-        if (l4Builder_ == null) {
-          l4_ = null;
-        } else {
-          l4_ = null;
-          l4Builder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings build() {
-        context.ContextOuterClass.ConnectionSettings result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionSettings buildPartial() {
-        context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
-        if (l0Builder_ == null) {
-          result.l0_ = l0_;
-        } else {
-          result.l0_ = l0Builder_.build();
-        }
-        if (l2Builder_ == null) {
-          result.l2_ = l2_;
-        } else {
-          result.l2_ = l2Builder_.build();
-        }
-        if (l3Builder_ == null) {
-          result.l3_ = l3_;
-        } else {
-          result.l3_ = l3Builder_.build();
-        }
-        if (l4Builder_ == null) {
-          result.l4_ = l4_;
-        } else {
-          result.l4_ = l4Builder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionSettings) {
-          return mergeFrom((context.ContextOuterClass.ConnectionSettings)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings other) {
-        if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) return this;
-        if (other.hasL0()) {
-          mergeL0(other.getL0());
-        }
-        if (other.hasL2()) {
-          mergeL2(other.getL2());
-        }
-        if (other.hasL3()) {
-          mergeL3(other.getL3());
-        }
-        if (other.hasL4()) {
-          mergeL4(other.getL4());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionSettings parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ConnectionSettings_L0 l0_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       * @return Whether the l0 field is set.
-       */
-      public boolean hasL0() {
-        return l0Builder_ != null || l0_ != null;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       * @return The l0.
-       */
-      public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
-        if (l0Builder_ == null) {
-          return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
-        } else {
-          return l0Builder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
-        if (l0Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l0_ = value;
-          onChanged();
-        } else {
-          l0Builder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public Builder setL0(
-          context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
-        if (l0Builder_ == null) {
-          l0_ = builderForValue.build();
-          onChanged();
-        } else {
-          l0Builder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
-        if (l0Builder_ == null) {
-          if (l0_ != null) {
-            l0_ =
-              context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
-          } else {
-            l0_ = value;
-          }
-          onChanged();
-        } else {
-          l0Builder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public Builder clearL0() {
-        if (l0Builder_ == null) {
-          l0_ = null;
-          onChanged();
-        } else {
-          l0_ = null;
-          l0Builder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
-        
-        onChanged();
-        return getL0FieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
-        if (l0Builder_ != null) {
-          return l0Builder_.getMessageOrBuilder();
-        } else {
-          return l0_ == null ?
-              context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> 
-          getL0FieldBuilder() {
-        if (l0Builder_ == null) {
-          l0Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder>(
-                  getL0(),
-                  getParentForChildren(),
-                  isClean());
-          l0_ = null;
-        }
-        return l0Builder_;
-      }
-
-      private context.ContextOuterClass.ConnectionSettings_L2 l2_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       * @return Whether the l2 field is set.
-       */
-      public boolean hasL2() {
-        return l2Builder_ != null || l2_ != null;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       * @return The l2.
-       */
-      public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
-        if (l2Builder_ == null) {
-          return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
-        } else {
-          return l2Builder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
-        if (l2Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l2_ = value;
-          onChanged();
-        } else {
-          l2Builder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public Builder setL2(
-          context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
-        if (l2Builder_ == null) {
-          l2_ = builderForValue.build();
-          onChanged();
-        } else {
-          l2Builder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
-        if (l2Builder_ == null) {
-          if (l2_ != null) {
-            l2_ =
-              context.ContextOuterClass.ConnectionSettings_L2.newBuilder(l2_).mergeFrom(value).buildPartial();
-          } else {
-            l2_ = value;
-          }
-          onChanged();
-        } else {
-          l2Builder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public Builder clearL2() {
-        if (l2Builder_ == null) {
-          l2_ = null;
-          onChanged();
-        } else {
-          l2_ = null;
-          l2Builder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
-        
-        onChanged();
-        return getL2FieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
-        if (l2Builder_ != null) {
-          return l2Builder_.getMessageOrBuilder();
-        } else {
-          return l2_ == null ?
-              context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> 
-          getL2FieldBuilder() {
-        if (l2Builder_ == null) {
-          l2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder>(
-                  getL2(),
-                  getParentForChildren(),
-                  isClean());
-          l2_ = null;
-        }
-        return l2Builder_;
-      }
-
-      private context.ContextOuterClass.ConnectionSettings_L3 l3_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> l3Builder_;
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       * @return Whether the l3 field is set.
-       */
-      public boolean hasL3() {
-        return l3Builder_ != null || l3_ != null;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       * @return The l3.
-       */
-      public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
-        if (l3Builder_ == null) {
-          return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
-        } else {
-          return l3Builder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
-        if (l3Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l3_ = value;
-          onChanged();
-        } else {
-          l3Builder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder setL3(
-          context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
-        if (l3Builder_ == null) {
-          l3_ = builderForValue.build();
-          onChanged();
-        } else {
-          l3Builder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
-        if (l3Builder_ == null) {
-          if (l3_ != null) {
-            l3_ =
-              context.ContextOuterClass.ConnectionSettings_L3.newBuilder(l3_).mergeFrom(value).buildPartial();
-          } else {
-            l3_ = value;
-          }
-          onChanged();
-        } else {
-          l3Builder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public Builder clearL3() {
-        if (l3Builder_ == null) {
-          l3_ = null;
-          onChanged();
-        } else {
-          l3_ = null;
-          l3Builder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
-        
-        onChanged();
-        return getL3FieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
-        if (l3Builder_ != null) {
-          return l3Builder_.getMessageOrBuilder();
-        } else {
-          return l3_ == null ?
-              context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> 
-          getL3FieldBuilder() {
-        if (l3Builder_ == null) {
-          l3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder>(
-                  getL3(),
-                  getParentForChildren(),
-                  isClean());
-          l3_ = null;
-        }
-        return l3Builder_;
-      }
-
-      private context.ContextOuterClass.ConnectionSettings_L4 l4_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> l4Builder_;
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       * @return Whether the l4 field is set.
-       */
-      public boolean hasL4() {
-        return l4Builder_ != null || l4_ != null;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       * @return The l4.
-       */
-      public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
-        if (l4Builder_ == null) {
-          return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
-        } else {
-          return l4Builder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
-        if (l4Builder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          l4_ = value;
-          onChanged();
-        } else {
-          l4Builder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public Builder setL4(
-          context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
-        if (l4Builder_ == null) {
-          l4_ = builderForValue.build();
-          onChanged();
-        } else {
-          l4Builder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
-        if (l4Builder_ == null) {
-          if (l4_ != null) {
-            l4_ =
-              context.ContextOuterClass.ConnectionSettings_L4.newBuilder(l4_).mergeFrom(value).buildPartial();
-          } else {
-            l4_ = value;
-          }
-          onChanged();
-        } else {
-          l4Builder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public Builder clearL4() {
-        if (l4Builder_ == null) {
-          l4_ = null;
-          onChanged();
-        } else {
-          l4_ = null;
-          l4Builder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
-        
-        onChanged();
-        return getL4FieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
-        if (l4Builder_ != null) {
-          return l4Builder_.getMessageOrBuilder();
-        } else {
-          return l4_ == null ?
-              context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> 
-          getL4FieldBuilder() {
-        if (l4Builder_ == null) {
-          l4Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder>(
-                  getL4(),
-                  getParentForChildren(),
-                  isClean());
-          l4_ = null;
-        }
-        return l4Builder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint_Exclusions)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint_Exclusions other = (context.ContextOuterClass.Constraint_Exclusions) obj;
+            if (getIsPermanent() != other.getIsPermanent())
+                return false;
+            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
+                return false;
+            if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
+                return false;
+            if (!getLinkIdsList().equals(other.getLinkIdsList()))
+                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) + IS_PERMANENT_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIsPermanent());
+            if (getDeviceIdsCount() > 0) {
+                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceIdsList().hashCode();
+            }
+            if (getEndpointIdsCount() > 0) {
+                hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointIdsList().hashCode();
+            }
+            if (getLinkIdsCount() > 0) {
+                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkIdsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
-    private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<ConnectionSettings>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings>() {
-      @java.lang.Override
-      public ConnectionSettings parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionSettings(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionSettings> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionSettings> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-  public interface ConnectionOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Connection)
-      com.google.protobuf.MessageOrBuilder {
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     * @return Whether the connectionId field is set.
-     */
-    boolean hasConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     * @return The connectionId.
-     */
-    context.ContextOuterClass.ConnectionId getConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return Whether the serviceId field is set.
-     */
-    boolean hasServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return The serviceId.
-     */
-    context.ContextOuterClass.ServiceId getServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+        public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getPathHopsEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    int getPathHopsEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getPathHopsEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.ServiceId> 
-        getSubServiceIdsList();
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    context.ContextOuterClass.ServiceId getSubServiceIds(int index);
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    int getSubServiceIdsCount();
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getSubServiceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-        int index);
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return Whether the settings field is set.
-     */
-    boolean hasSettings();
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return The settings.
-     */
-    context.ContextOuterClass.ConnectionSettings getSettings();
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     */
-    context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Connection}
-   */
-  public static final class Connection extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Connection)
-      ConnectionOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Connection.newBuilder() to construct.
-    private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Connection() {
-      pathHopsEndpointIds_ = java.util.Collections.emptyList();
-      subServiceIds_ = java.util.Collections.emptyList();
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Connection();
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Connection(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              pathHopsEndpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              subServiceIds_.add(
-                  input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry));
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.ConnectionSettings.Builder subBuilder = null;
-              if (settings_ != null) {
-                subBuilder = settings_.toBuilder();
-              }
-              settings_ = input.readMessage(context.ContextOuterClass.ConnectionSettings.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(settings_);
-                settings_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Connection_descriptor;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint_Exclusions prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ConnectionId connectionId_;
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     * @return Whether the connectionId field is set.
-     */
-    @java.lang.Override
-    public boolean hasConnectionId() {
-      return connectionId_ != null;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     * @return The connectionId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getConnectionId() {
-      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-      return getConnectionId();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.ServiceId serviceId_;
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return Whether the serviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     * @return The serviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
-      return pathHopsEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getPathHopsEndpointIdsOrBuilderList() {
-      return pathHopsEndpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getPathHopsEndpointIdsCount() {
-      return pathHopsEndpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
-      return pathHopsEndpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
-        int index) {
-      return pathHopsEndpointIds_.get(index);
-    }
+        /**
+         * Protobuf type {@code context.Constraint_Exclusions}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Exclusions)
+        context.ContextOuterClass.Constraint_ExclusionsOrBuilder {
 
-    public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
-      return subServiceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-        getSubServiceIdsOrBuilderList() {
-      return subServiceIds_;
-    }
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public int getSubServiceIdsCount() {
-      return subServiceIds_.size();
-    }
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
-      return subServiceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-        int index) {
-      return subServiceIds_.get(index);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
+            }
 
-    public static final int SETTINGS_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.ConnectionSettings settings_;
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return Whether the settings field is set.
-     */
-    @java.lang.Override
-    public boolean hasSettings() {
-      return settings_ != null;
-    }
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     * @return The settings.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettings getSettings() {
-      return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
-    }
-    /**
-     * <code>.context.ConnectionSettings settings = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-      return getSettings();
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.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;
+            // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
+            private Builder() {
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (connectionId_ != null) {
-        output.writeMessage(1, getConnectionId());
-      }
-      if (serviceId_ != null) {
-        output.writeMessage(2, getServiceId());
-      }
-      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
-        output.writeMessage(3, pathHopsEndpointIds_.get(i));
-      }
-      for (int i = 0; i < subServiceIds_.size(); i++) {
-        output.writeMessage(4, subServiceIds_.get(i));
-      }
-      if (settings_ != null) {
-        output.writeMessage(5, getSettings());
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                isPermanent_ = false;
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                } else {
+                    deviceIds_ = null;
+                    deviceIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000002);
+                if (endpointIdsBuilder_ == null) {
+                    endpointIds_ = java.util.Collections.emptyList();
+                } else {
+                    endpointIds_ = null;
+                    endpointIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                } else {
+                    linkIds_ = null;
+                    linkIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000008);
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getConnectionId());
-      }
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getServiceId());
-      }
-      for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, pathHopsEndpointIds_.get(i));
-      }
-      for (int i = 0; i < subServiceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, subServiceIds_.get(i));
-      }
-      if (settings_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getSettings());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Connection)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;
-
-      if (hasConnectionId() != other.hasConnectionId()) return false;
-      if (hasConnectionId()) {
-        if (!getConnectionId()
-            .equals(other.getConnectionId())) return false;
-      }
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (!getPathHopsEndpointIdsList()
-          .equals(other.getPathHopsEndpointIdsList())) return false;
-      if (!getSubServiceIdsList()
-          .equals(other.getSubServiceIdsList())) return false;
-      if (hasSettings() != other.hasSettings()) return false;
-      if (hasSettings()) {
-        if (!getSettings()
-            .equals(other.getSettings())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasConnectionId()) {
-        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionId().hashCode();
-      }
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      if (getPathHopsEndpointIdsCount() > 0) {
-        hash = (37 * hash) + PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getPathHopsEndpointIdsList().hashCode();
-      }
-      if (getSubServiceIdsCount() > 0) {
-        hash = (37 * hash) + SUB_SERVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getSubServiceIdsList().hashCode();
-      }
-      if (hasSettings()) {
-        hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
-        hash = (53 * hash) + getSettings().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Exclusions build() {
+                context.ContextOuterClass.Constraint_Exclusions result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static context.ContextOuterClass.Connection parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Connection parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Connection parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
+                context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
+                if (deviceIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
+                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
+                        bitField0_ = (bitField0_ & ~0x00000002);
+                    }
+                    result.deviceIds_ = deviceIds_;
+                } else {
+                    result.deviceIds_ = deviceIdsBuilder_.build();
+                }
+                if (endpointIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.endpointIds_ = endpointIds_;
+                } else {
+                    result.endpointIds_ = endpointIdsBuilder_.build();
+                }
+                if (linkIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0)) {
+                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
+                        bitField0_ = (bitField0_ & ~0x00000008);
+                    }
+                    result.linkIds_ = linkIds_;
+                } else {
+                    result.linkIds_ = linkIdsBuilder_.build();
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Connection}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Connection)
-        context.ContextOuterClass.ConnectionOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Connection.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getPathHopsEndpointIdsFieldBuilder();
-          getSubServiceIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          pathHopsEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          pathHopsEndpointIdsBuilder_.clear();
-        }
-        if (subServiceIdsBuilder_ == null) {
-          subServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          subServiceIdsBuilder_.clear();
-        }
-        if (settingsBuilder_ == null) {
-          settings_ = null;
-        } else {
-          settings_ = null;
-          settingsBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Connection_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Connection getDefaultInstanceForType() {
-        return context.ContextOuterClass.Connection.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Connection build() {
-        context.ContextOuterClass.Connection result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Connection buildPartial() {
-        context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
-        int from_bitField0_ = bitField0_;
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
-        } else {
-          result.connectionId_ = connectionIdBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
-        } else {
-          result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
-        }
-        if (subServiceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.subServiceIds_ = subServiceIds_;
-        } else {
-          result.subServiceIds_ = subServiceIdsBuilder_.build();
-        }
-        if (settingsBuilder_ == null) {
-          result.settings_ = settings_;
-        } else {
-          result.settings_ = settingsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Connection) {
-          return mergeFrom((context.ContextOuterClass.Connection)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Connection other) {
-        if (other == context.ContextOuterClass.Connection.getDefaultInstance()) return this;
-        if (other.hasConnectionId()) {
-          mergeConnectionId(other.getConnectionId());
-        }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
-        }
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (!other.pathHopsEndpointIds_.isEmpty()) {
-            if (pathHopsEndpointIds_.isEmpty()) {
-              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensurePathHopsEndpointIdsIsMutable();
-              pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.pathHopsEndpointIds_.isEmpty()) {
-            if (pathHopsEndpointIdsBuilder_.isEmpty()) {
-              pathHopsEndpointIdsBuilder_.dispose();
-              pathHopsEndpointIdsBuilder_ = null;
-              pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              pathHopsEndpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getPathHopsEndpointIdsFieldBuilder() : null;
-            } else {
-              pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
+            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.isPermanent_ = isPermanent_;
+                }
             }
-          }
-        }
-        if (subServiceIdsBuilder_ == null) {
-          if (!other.subServiceIds_.isEmpty()) {
-            if (subServiceIds_.isEmpty()) {
-              subServiceIds_ = other.subServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureSubServiceIdsIsMutable();
-              subServiceIds_.addAll(other.subServiceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.subServiceIds_.isEmpty()) {
-            if (subServiceIdsBuilder_.isEmpty()) {
-              subServiceIdsBuilder_.dispose();
-              subServiceIdsBuilder_ = null;
-              subServiceIds_ = other.subServiceIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              subServiceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSubServiceIdsFieldBuilder() : null;
-            } else {
-              subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
-            }
-          }
-        }
-        if (other.hasSettings()) {
-          mergeSettings(other.getSettings());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Connection parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Connection) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.ConnectionId connectionId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       * @return Whether the connectionId field is set.
-       */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       * @return The connectionId.
-       */
-      public context.ContextOuterClass.ConnectionId getConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        } else {
-          return connectionIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionId_ = value;
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
-          } else {
-            connectionId_ = value;
-          }
-          onChanged();
-        } else {
-          connectionIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-          onChanged();
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-        
-        onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-        if (connectionIdBuilder_ != null) {
-          return connectionIdBuilder_.getMessageOrBuilder();
-        } else {
-          return connectionId_ == null ?
-              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
-          getConnectionIdFieldBuilder() {
-        if (connectionIdBuilder_ == null) {
-          connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
-                  getConnectionId(),
-                  getParentForChildren(),
-                  isClean());
-          connectionId_ = null;
-        }
-        return connectionIdBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensurePathHopsEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> pathHopsEndpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-        } else {
-          return pathHopsEndpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public int getPathHopsEndpointIdsCount() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          return pathHopsEndpointIds_.size();
-        } else {
-          return pathHopsEndpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          return pathHopsEndpointIds_.get(index);
-        } else {
-          return pathHopsEndpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder setPathHopsEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.set(index, value);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder setPathHopsEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.add(value);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder addPathHopsEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.add(index, value);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder addPathHopsEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder addPathHopsEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder addAllPathHopsEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          ensurePathHopsEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, pathHopsEndpointIds_);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder clearPathHopsEndpointIds() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          pathHopsEndpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public Builder removePathHopsEndpointIds(int index) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          ensurePathHopsEndpointIdsIsMutable();
-          pathHopsEndpointIds_.remove(index);
-          onChanged();
-        } else {
-          pathHopsEndpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getPathHopsEndpointIdsBuilder(
-          int index) {
-        return getPathHopsEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(
-          int index) {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          return pathHopsEndpointIds_.get(index);  } else {
-          return pathHopsEndpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getPathHopsEndpointIdsOrBuilderList() {
-        if (pathHopsEndpointIdsBuilder_ != null) {
-          return pathHopsEndpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder() {
-        return getPathHopsEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder(
-          int index) {
-        return getPathHopsEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getPathHopsEndpointIdsBuilderList() {
-        return getPathHopsEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getPathHopsEndpointIdsFieldBuilder() {
-        if (pathHopsEndpointIdsBuilder_ == null) {
-          pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  pathHopsEndpointIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          pathHopsEndpointIds_ = null;
-        }
-        return pathHopsEndpointIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureSubServiceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> subServiceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
-        if (subServiceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(subServiceIds_);
-        } else {
-          return subServiceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public int getSubServiceIdsCount() {
-        if (subServiceIdsBuilder_ == null) {
-          return subServiceIds_.size();
-        } else {
-          return subServiceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
-        if (subServiceIdsBuilder_ == null) {
-          return subServiceIds_.get(index);
-        } else {
-          return subServiceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder setSubServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (subServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.set(index, value);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder setSubServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (subServiceIdsBuilder_ == null) {
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder addSubServiceIds(context.ContextOuterClass.ServiceId value) {
-        if (subServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.add(value);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder addSubServiceIds(
-          int index, context.ContextOuterClass.ServiceId value) {
-        if (subServiceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.add(index, value);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder addSubServiceIds(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (subServiceIdsBuilder_ == null) {
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder addSubServiceIds(
-          int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (subServiceIdsBuilder_ == null) {
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder addAllSubServiceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
-        if (subServiceIdsBuilder_ == null) {
-          ensureSubServiceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, subServiceIds_);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder clearSubServiceIds() {
-        if (subServiceIdsBuilder_ == null) {
-          subServiceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public Builder removeSubServiceIds(int index) {
-        if (subServiceIdsBuilder_ == null) {
-          ensureSubServiceIdsIsMutable();
-          subServiceIds_.remove(index);
-          onChanged();
-        } else {
-          subServiceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(
-          int index) {
-        return getSubServiceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(
-          int index) {
-        if (subServiceIdsBuilder_ == null) {
-          return subServiceIds_.get(index);  } else {
-          return subServiceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> 
-           getSubServiceIdsOrBuilderList() {
-        if (subServiceIdsBuilder_ != null) {
-          return subServiceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(subServiceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder() {
-        return getSubServiceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder(
-          int index) {
-        return getSubServiceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ServiceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ServiceId.Builder> 
-           getSubServiceIdsBuilderList() {
-        return getSubServiceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getSubServiceIdsFieldBuilder() {
-        if (subServiceIdsBuilder_ == null) {
-          subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  subServiceIds_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          subServiceIds_ = null;
-        }
-        return subServiceIdsBuilder_;
-      }
-
-      private context.ContextOuterClass.ConnectionSettings settings_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> settingsBuilder_;
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       * @return Whether the settings field is set.
-       */
-      public boolean hasSettings() {
-        return settingsBuilder_ != null || settings_ != null;
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       * @return The settings.
-       */
-      public context.ContextOuterClass.ConnectionSettings getSettings() {
-        if (settingsBuilder_ == null) {
-          return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
-        } else {
-          return settingsBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
-        if (settingsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          settings_ = value;
-          onChanged();
-        } else {
-          settingsBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public Builder setSettings(
-          context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
-        if (settingsBuilder_ == null) {
-          settings_ = builderForValue.build();
-          onChanged();
-        } else {
-          settingsBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
-        if (settingsBuilder_ == null) {
-          if (settings_ != null) {
-            settings_ =
-              context.ContextOuterClass.ConnectionSettings.newBuilder(settings_).mergeFrom(value).buildPartial();
-          } else {
-            settings_ = value;
-          }
-          onChanged();
-        } else {
-          settingsBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public Builder clearSettings() {
-        if (settingsBuilder_ == null) {
-          settings_ = null;
-          onChanged();
-        } else {
-          settings_ = null;
-          settingsBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
-        
-        onChanged();
-        return getSettingsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
-        if (settingsBuilder_ != null) {
-          return settingsBuilder_.getMessageOrBuilder();
-        } else {
-          return settings_ == null ?
-              context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionSettings settings = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> 
-          getSettingsFieldBuilder() {
-        if (settingsBuilder_ == null) {
-          settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder>(
-                  getSettings(),
-                  getParentForChildren(),
-                  isClean());
-          settings_ = null;
-        }
-        return settingsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Connection)
-    }
 
-    // @@protoc_insertion_point(class_scope:context.Connection)
-    private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint_Exclusions) {
+                    return mergeFrom((context.ContextOuterClass.Constraint_Exclusions) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    public static context.ContextOuterClass.Connection getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint_Exclusions other) {
+                if (other == context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance())
+                    return this;
+                if (other.getIsPermanent() != false) {
+                    setIsPermanent(other.getIsPermanent());
+                }
+                if (deviceIdsBuilder_ == null) {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIds_.isEmpty()) {
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000002);
+                        } else {
+                            ensureDeviceIdsIsMutable();
+                            deviceIds_.addAll(other.deviceIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.deviceIds_.isEmpty()) {
+                        if (deviceIdsBuilder_.isEmpty()) {
+                            deviceIdsBuilder_.dispose();
+                            deviceIdsBuilder_ = null;
+                            deviceIds_ = other.deviceIds_;
+                            bitField0_ = (bitField0_ & ~0x00000002);
+                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
+                        } else {
+                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
+                        }
+                    }
+                }
+                if (endpointIdsBuilder_ == null) {
+                    if (!other.endpointIds_.isEmpty()) {
+                        if (endpointIds_.isEmpty()) {
+                            endpointIds_ = other.endpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureEndpointIdsIsMutable();
+                            endpointIds_.addAll(other.endpointIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.endpointIds_.isEmpty()) {
+                        if (endpointIdsBuilder_.isEmpty()) {
+                            endpointIdsBuilder_.dispose();
+                            endpointIdsBuilder_ = null;
+                            endpointIds_ = other.endpointIds_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
+                        } else {
+                            endpointIdsBuilder_.addAllMessages(other.endpointIds_);
+                        }
+                    }
+                }
+                if (linkIdsBuilder_ == null) {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIds_.isEmpty()) {
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                        } else {
+                            ensureLinkIdsIsMutable();
+                            linkIds_.addAll(other.linkIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.linkIds_.isEmpty()) {
+                        if (linkIdsBuilder_.isEmpty()) {
+                            linkIdsBuilder_.dispose();
+                            linkIdsBuilder_ = null;
+                            linkIds_ = other.linkIds_;
+                            bitField0_ = (bitField0_ & ~0x00000008);
+                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
+                        } else {
+                            linkIdsBuilder_.addAllMessages(other.linkIds_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<Connection>
-        PARSER = new com.google.protobuf.AbstractParser<Connection>() {
-      @java.lang.Override
-      public Connection parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Connection(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Connection> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Connection> getParserForType() {
-      return PARSER;
-    }
+            @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:
+                                {
+                                    isPermanent_ = input.readBool();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
+                                    if (deviceIdsBuilder_ == null) {
+                                        ensureDeviceIdsIsMutable();
+                                        deviceIds_.add(m);
+                                    } else {
+                                        deviceIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
+                                    if (endpointIdsBuilder_ == null) {
+                                        ensureEndpointIdsIsMutable();
+                                        endpointIds_.add(m);
+                                    } else {
+                                        endpointIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+                                    if (linkIdsBuilder_ == null) {
+                                        ensureLinkIdsIsMutable();
+                                        linkIds_.add(m);
+                                    } else {
+                                        linkIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 34
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Connection getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private int bitField0_;
 
-  }
+            private boolean isPermanent_;
 
-  public interface ConnectionIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>bool is_permanent = 1;</code>
+             * @return The isPermanent.
+             */
+            @java.lang.Override
+            public boolean getIsPermanent() {
+                return isPermanent_;
+            }
 
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.ConnectionId> 
-        getConnectionIdsList();
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    context.ContextOuterClass.ConnectionId getConnectionIds(int index);
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    int getConnectionIdsCount();
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-        getConnectionIdsOrBuilderList();
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ConnectionIdList}
-   */
-  public static final class ConnectionIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
-      ConnectionIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionIdList.newBuilder() to construct.
-    private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionIdList() {
-      connectionIds_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>bool is_permanent = 1;</code>
+             * @param value The isPermanent to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIsPermanent(boolean value) {
+                isPermanent_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionIdList();
-    }
+            /**
+             * <code>bool is_permanent = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIsPermanent() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                isPermanent_ = false;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              connectionIds_.add(
-                  input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
-    }
+            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
-    }
+            private void ensureDeviceIdsIsMutable() {
+                if (!((bitField0_ & 0x00000002) != 0)) {
+                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
+                    bitField0_ |= 0x00000002;
+                }
+            }
 
-    public static final int CONNECTION_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
-      return connectionIds_;
-    }
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-        getConnectionIdsOrBuilderList() {
-      return connectionIds_;
-    }
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getConnectionIdsCount() {
-      return connectionIds_.size();
-    }
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
-      return connectionIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-        int index) {
-      return connectionIds_.get(index);
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
+                if (deviceIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                } else {
+                    return deviceIdsBuilder_.getMessageList();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public int getDeviceIdsCount() {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.size();
+                } else {
+                    return deviceIdsBuilder_.getCount();
+                }
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < connectionIds_.size(); i++) {
-        output.writeMessage(1, connectionIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessage(index);
+                }
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < connectionIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, connectionIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
-
-      if (!getConnectionIdsList()
-          .equals(other.getConnectionIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConnectionIdsCount() > 0) {
-        hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
+                if (deviceIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, value);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionIdList)
-        context.ContextOuterClass.ConnectionIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConnectionIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (connectionIdsBuilder_ == null) {
-          connectionIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          connectionIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList build() {
-        context.ContextOuterClass.ConnectionIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionIdList buildPartial() {
-        context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (connectionIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.connectionIds_ = connectionIds_;
-        } else {
-          result.connectionIds_ = connectionIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionIdList) {
-          return mergeFrom((context.ContextOuterClass.ConnectionIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionIdList other) {
-        if (other == context.ContextOuterClass.ConnectionIdList.getDefaultInstance()) return this;
-        if (connectionIdsBuilder_ == null) {
-          if (!other.connectionIds_.isEmpty()) {
-            if (connectionIds_.isEmpty()) {
-              connectionIds_ = other.connectionIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureConnectionIdsIsMutable();
-              connectionIds_.addAll(other.connectionIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.connectionIds_.isEmpty()) {
-            if (connectionIdsBuilder_.isEmpty()) {
-              connectionIdsBuilder_.dispose();
-              connectionIdsBuilder_ = null;
-              connectionIds_ = other.connectionIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              connectionIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConnectionIdsFieldBuilder() : null;
-            } else {
-              connectionIdsBuilder_.addAllMessages(other.connectionIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_ =
-        java.util.Collections.emptyList();
-      private void ensureConnectionIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>(connectionIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;
-
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
-        if (connectionIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(connectionIds_);
-        } else {
-          return connectionIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public int getConnectionIdsCount() {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.size();
-        } else {
-          return connectionIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.get(index);
-        } else {
-          return connectionIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder setConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.set(index, value);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder setConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          connectionIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(value);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder addConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(index, value);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder addConnectionIds(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          connectionIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder addConnectionIds(
-          int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          connectionIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder addAllConnectionIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.ConnectionId> values) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, connectionIds_);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder clearConnectionIds() {
-        if (connectionIdsBuilder_ == null) {
-          connectionIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public Builder removeConnectionIds(int index) {
-        if (connectionIdsBuilder_ == null) {
-          ensureConnectionIdsIsMutable();
-          connectionIds_.remove(index);
-          onChanged();
-        } else {
-          connectionIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdsBuilder(
-          int index) {
-        return getConnectionIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(
-          int index) {
-        if (connectionIdsBuilder_ == null) {
-          return connectionIds_.get(index);  } else {
-          return connectionIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> 
-           getConnectionIdsOrBuilderList() {
-        if (connectionIdsBuilder_ != null) {
-          return connectionIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(connectionIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
-        return getConnectionIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.ConnectionId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(
-          int index) {
-        return getConnectionIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.ConnectionId connection_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.ConnectionId.Builder> 
-           getConnectionIdsBuilderList() {
-        return getConnectionIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
-          getConnectionIdsFieldBuilder() {
-        if (connectionIdsBuilder_ == null) {
-          connectionIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
-                  connectionIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          connectionIds_ = null;
-        }
-        return connectionIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
-    private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder clearDeviceIds() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.clear();
+                }
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<ConnectionIdList>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionIdList>() {
-      @java.lang.Override
-      public ConnectionIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionIdList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public Builder removeDeviceIds(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    ensureDeviceIdsIsMutable();
+                    deviceIds_.remove(index);
+                    onChanged();
+                } else {
+                    deviceIdsBuilder_.remove(index);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionIdList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().getBuilder(index);
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
+                if (deviceIdsBuilder_ == null) {
+                    return deviceIds_.get(index);
+                } else {
+                    return deviceIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-  }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
+                if (deviceIdsBuilder_ != null) {
+                    return deviceIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(deviceIds_);
+                }
+            }
 
-  public interface ConnectionListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionList)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
+                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
 
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.Connection> 
-        getConnectionsList();
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    context.ContextOuterClass.Connection getConnections(int index);
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    int getConnectionsCount();
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-        getConnectionsOrBuilderList();
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.ConnectionList}
-   */
-  public static final class ConnectionList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionList)
-      ConnectionListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionList.newBuilder() to construct.
-    private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionList() {
-      connections_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
+                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionList();
-    }
+            /**
+             * <code>repeated .context.DeviceId device_ids = 2;</code>
+             */
+            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
+                return getDeviceIdsFieldBuilder().getBuilderList();
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              connections_.add(
-                  input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          connections_ = java.util.Collections.unmodifiableList(connections_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
+                if (deviceIdsBuilder_ == null) {
+                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    deviceIds_ = null;
+                }
+                return deviceIdsBuilder_;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
-    }
+            private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();
 
-    public static final int CONNECTIONS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.Connection> connections_;
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
-      return connections_;
-    }
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-        getConnectionsOrBuilderList() {
-      return connections_;
-    }
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    @java.lang.Override
-    public int getConnectionsCount() {
-      return connections_.size();
-    }
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Connection getConnections(int index) {
-      return connections_.get(index);
-    }
-    /**
-     * <code>repeated .context.Connection connections = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
-        int index) {
-      return connections_.get(index);
-    }
+            private void ensureEndpointIdsIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
+                if (endpointIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(endpointIds_);
+                } else {
+                    return endpointIdsBuilder_.getMessageList();
+                }
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < connections_.size(); i++) {
-        output.writeMessage(1, connections_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public int getEndpointIdsCount() {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.size();
+                } else {
+                    return endpointIdsBuilder_.getCount();
+                }
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < connections_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, connections_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.get(index);
+                } else {
+                    return endpointIdsBuilder_.getMessage(index);
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
-
-      if (!getConnectionsList()
-          .equals(other.getConnectionsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.set(index, value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getConnectionsCount() > 0) {
-        hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
+                if (endpointIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(index, value);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionList)
-        context.ContextOuterClass.ConnectionListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getConnectionsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (connectionsBuilder_ == null) {
-          connections_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          connectionsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionList build() {
-        context.ContextOuterClass.ConnectionList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionList buildPartial() {
-        context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
-        int from_bitField0_ = bitField0_;
-        if (connectionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            connections_ = java.util.Collections.unmodifiableList(connections_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.connections_ = connections_;
-        } else {
-          result.connections_ = connectionsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionList) {
-          return mergeFrom((context.ContextOuterClass.ConnectionList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionList other) {
-        if (other == context.ContextOuterClass.ConnectionList.getDefaultInstance()) return this;
-        if (connectionsBuilder_ == null) {
-          if (!other.connections_.isEmpty()) {
-            if (connections_.isEmpty()) {
-              connections_ = other.connections_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureConnectionsIsMutable();
-              connections_.addAll(other.connections_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.connections_.isEmpty()) {
-            if (connectionsBuilder_.isEmpty()) {
-              connectionsBuilder_.dispose();
-              connectionsBuilder_ = null;
-              connections_ = other.connections_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              connectionsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getConnectionsFieldBuilder() : null;
-            } else {
-              connectionsBuilder_.addAllMessages(other.connections_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.Connection> connections_ =
-        java.util.Collections.emptyList();
-      private void ensureConnectionsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>(connections_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;
-
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
-        if (connectionsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(connections_);
-        } else {
-          return connectionsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public int getConnectionsCount() {
-        if (connectionsBuilder_ == null) {
-          return connections_.size();
-        } else {
-          return connectionsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public context.ContextOuterClass.Connection getConnections(int index) {
-        if (connectionsBuilder_ == null) {
-          return connections_.get(index);
-        } else {
-          return connectionsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder setConnections(
-          int index, context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionsIsMutable();
-          connections_.set(index, value);
-          onChanged();
-        } else {
-          connectionsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder setConnections(
-          int index, context.ContextOuterClass.Connection.Builder builderForValue) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          connections_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          connectionsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder addConnections(context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionsIsMutable();
-          connections_.add(value);
-          onChanged();
-        } else {
-          connectionsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder addConnections(
-          int index, context.ContextOuterClass.Connection value) {
-        if (connectionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureConnectionsIsMutable();
-          connections_.add(index, value);
-          onChanged();
-        } else {
-          connectionsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder addConnections(
-          context.ContextOuterClass.Connection.Builder builderForValue) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          connections_.add(builderForValue.build());
-          onChanged();
-        } else {
-          connectionsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder addConnections(
-          int index, context.ContextOuterClass.Connection.Builder builderForValue) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          connections_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          connectionsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder addAllConnections(
-          java.lang.Iterable<? extends context.ContextOuterClass.Connection> values) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, connections_);
-          onChanged();
-        } else {
-          connectionsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder clearConnections() {
-        if (connectionsBuilder_ == null) {
-          connections_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          connectionsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public Builder removeConnections(int index) {
-        if (connectionsBuilder_ == null) {
-          ensureConnectionsIsMutable();
-          connections_.remove(index);
-          onChanged();
-        } else {
-          connectionsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public context.ContextOuterClass.Connection.Builder getConnectionsBuilder(
-          int index) {
-        return getConnectionsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(
-          int index) {
-        if (connectionsBuilder_ == null) {
-          return connections_.get(index);  } else {
-          return connectionsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> 
-           getConnectionsOrBuilderList() {
-        if (connectionsBuilder_ != null) {
-          return connectionsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(connections_);
-        }
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder() {
-        return getConnectionsFieldBuilder().addBuilder(
-            context.ContextOuterClass.Connection.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public context.ContextOuterClass.Connection.Builder addConnectionsBuilder(
-          int index) {
-        return getConnectionsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.Connection.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.Connection connections = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.Connection.Builder> 
-           getConnectionsBuilderList() {
-        return getConnectionsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> 
-          getConnectionsFieldBuilder() {
-        if (connectionsBuilder_ == null) {
-          connectionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder>(
-                  connections_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          connections_ = null;
-        }
-        return connectionsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionList)
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder addEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder addAllEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointIds_);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder clearEndpointIds() {
+                if (endpointIdsBuilder_ == null) {
+                    endpointIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.clear();
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionList)
-    private static final context.ContextOuterClass.ConnectionList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionList();
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public Builder removeEndpointIds(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    ensureEndpointIdsIsMutable();
+                    endpointIds_.remove(index);
+                    onChanged();
+                } else {
+                    endpointIdsBuilder_.remove(index);
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConnectionList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(int index) {
+                return getEndpointIdsFieldBuilder().getBuilder(index);
+            }
 
-    private static final com.google.protobuf.Parser<ConnectionList>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionList>() {
-      @java.lang.Override
-      public ConnectionList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
+                if (endpointIdsBuilder_ == null) {
+                    return endpointIds_.get(index);
+                } else {
+                    return endpointIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
+                if (endpointIdsBuilder_ != null) {
+                    return endpointIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(endpointIds_);
+                }
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
+                return getEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
 
-  }
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(int index) {
+                return getEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
+            }
 
-  public interface ConnectionEventOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConnectionEvent)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
+             */
+            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getEndpointIdsBuilderList() {
+                return getEndpointIdsFieldBuilder().getBuilderList();
+            }
 
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    boolean hasEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    context.ContextOuterClass.Event getEvent();
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    context.ContextOuterClass.EventOrBuilder getEventOrBuilder();
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
+                if (endpointIdsBuilder_ == null) {
+                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    endpointIds_ = null;
+                }
+                return endpointIdsBuilder_;
+            }
 
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     * @return Whether the connectionId field is set.
-     */
-    boolean hasConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     * @return The connectionId.
-     */
-    context.ContextOuterClass.ConnectionId getConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.ConnectionEvent}
-   */
-  public static final class ConnectionEvent extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConnectionEvent)
-      ConnectionEventOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConnectionEvent.newBuilder() to construct.
-    private ConnectionEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConnectionEvent() {
-    }
+            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConnectionEvent();
-    }
+            private void ensureLinkIdsIsMutable() {
+                if (!((bitField0_ & 0x00000008) != 0)) {
+                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
+                    bitField0_ |= 0x00000008;
+                }
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConnectionEvent(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Event.Builder subBuilder = null;
-              if (event_ != null) {
-                subBuilder = event_.toBuilder();
-              }
-              event_ = input.readMessage(context.ContextOuterClass.Event.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(event_);
-                event_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+                if (linkIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                } else {
+                    return linkIdsBuilder_.getMessageList();
+                }
+            }
 
-    public static final int EVENT_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Event event_;
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return Whether the event field is set.
-     */
-    @java.lang.Override
-    public boolean hasEvent() {
-      return event_ != null;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     * @return The event.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Event getEvent() {
-      return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-    }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public int getLinkIdsCount() {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.size();
+                } else {
+                    return linkIdsBuilder_.getCount();
+                }
+            }
 
-    public static final int CONNECTION_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.ConnectionId connectionId_;
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     * @return Whether the connectionId field is set.
-     */
-    @java.lang.Override
-    public boolean hasConnectionId() {
-      return connectionId_ != null;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     * @return The connectionId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getConnectionId() {
-      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-      return getConnectionId();
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId getLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessage(index);
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (event_ != null) {
-        output.writeMessage(1, getEvent());
-      }
-      if (connectionId_ != null) {
-        output.writeMessage(2, getConnectionId());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (event_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEvent());
-      }
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getConnectionId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
+                if (linkIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, value);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConnectionEvent)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;
-
-      if (hasEvent() != other.hasEvent()) return false;
-      if (hasEvent()) {
-        if (!getEvent()
-            .equals(other.getEvent())) return false;
-      }
-      if (hasConnectionId() != other.hasConnectionId()) return false;
-      if (hasConnectionId()) {
-        if (!getConnectionId()
-            .equals(other.getConnectionId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEvent()) {
-        hash = (37 * hash) + EVENT_FIELD_NUMBER;
-        hash = (53 * hash) + getEvent().hashCode();
-      }
-      if (hasConnectionId()) {
-        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConnectionEvent parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConnectionEvent prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder clearLinkIds() {
+                if (linkIdsBuilder_ == null) {
+                    linkIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000008);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConnectionEvent}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConnectionEvent)
-        context.ContextOuterClass.ConnectionEventOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (eventBuilder_ == null) {
-          event_ = null;
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent build() {
-        context.ContextOuterClass.ConnectionEvent result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConnectionEvent buildPartial() {
-        context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
-        if (eventBuilder_ == null) {
-          result.event_ = event_;
-        } else {
-          result.event_ = eventBuilder_.build();
-        }
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
-        } else {
-          result.connectionId_ = connectionIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConnectionEvent) {
-          return mergeFrom((context.ContextOuterClass.ConnectionEvent)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConnectionEvent other) {
-        if (other == context.ContextOuterClass.ConnectionEvent.getDefaultInstance()) return this;
-        if (other.hasEvent()) {
-          mergeEvent(other.getEvent());
-        }
-        if (other.hasConnectionId()) {
-          mergeConnectionId(other.getConnectionId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConnectionEvent parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConnectionEvent) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
-        } else {
-          event_ = null;
-          eventBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
-        } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
-        }
-        return eventBuilder_;
-      }
-
-      private context.ContextOuterClass.ConnectionId connectionId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       * @return Whether the connectionId field is set.
-       */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       * @return The connectionId.
-       */
-      public context.ContextOuterClass.ConnectionId getConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        } else {
-          return connectionIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionId_ = value;
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
-          } else {
-            connectionId_ = value;
-          }
-          onChanged();
-        } else {
-          connectionIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-          onChanged();
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-        
-        onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-        if (connectionIdBuilder_ != null) {
-          return connectionIdBuilder_.getMessageOrBuilder();
-        } else {
-          return connectionId_ == null ?
-              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
-          getConnectionIdFieldBuilder() {
-        if (connectionIdBuilder_ == null) {
-          connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
-                  getConnectionId(),
-                  getParentForChildren(),
-                  isClean());
-          connectionId_ = null;
-        }
-        return connectionIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public Builder removeLinkIds(int index) {
+                if (linkIdsBuilder_ == null) {
+                    ensureLinkIdsIsMutable();
+                    linkIds_.remove(index);
+                    onChanged();
+                } else {
+                    linkIdsBuilder_.remove(index);
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
-    private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().getBuilder(index);
+            }
 
-    public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
+                if (linkIdsBuilder_ == null) {
+                    return linkIds_.get(index);
+                } else {
+                    return linkIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-    private static final com.google.protobuf.Parser<ConnectionEvent>
-        PARSER = new com.google.protobuf.AbstractParser<ConnectionEvent>() {
-      @java.lang.Override
-      public ConnectionEvent parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConnectionEvent(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConnectionEvent> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
+                if (linkIdsBuilder_ != null) {
+                    return linkIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(linkIds_);
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConnectionEvent> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
+                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
+                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
+            }
 
-  }
+            /**
+             * <code>repeated .context.LinkId link_ids = 4;</code>
+             */
+            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
+                return getLinkIdsFieldBuilder().getBuilderList();
+            }
 
-  public interface EndPointIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointId)
-      com.google.protobuf.MessageOrBuilder {
+            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
+                if (linkIdsBuilder_ == null) {
+                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
+                    linkIds_ = null;
+                }
+                return linkIdsBuilder_;
+            }
 
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    boolean hasTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    context.ContextOuterClass.TopologyId getTopologyId();
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint_Exclusions)
+        }
 
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return Whether the endpointUuid field is set.
-     */
-    boolean hasEndpointUuid();
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return The endpointUuid.
-     */
-    context.ContextOuterClass.Uuid getEndpointUuid();
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
-  }
-  /**
-   * <pre>
-   * ----- Endpoint ------------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.EndPointId}
-   */
-  public static final class EndPointId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointId)
-      EndPointIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use EndPointId.newBuilder() to construct.
-    private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private EndPointId() {
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint_Exclusions)
+        private static final context.ContextOuterClass.Constraint_Exclusions DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new EndPointId();
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Exclusions();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private EndPointId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.TopologyId.Builder subBuilder = null;
-              if (topologyId_ != null) {
-                subBuilder = topologyId_.toBuilder();
-              }
-              topologyId_ = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(topologyId_);
-                topologyId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (endpointUuid_ != null) {
-                subBuilder = endpointUuid_.toBuilder();
-              }
-              endpointUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointUuid_);
-                endpointUuid_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
-    }
+        public static context.ContextOuterClass.Constraint_Exclusions getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
-    }
+        private static final com.google.protobuf.Parser<Constraint_Exclusions> PARSER = new com.google.protobuf.AbstractParser<Constraint_Exclusions>() {
 
-    public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.TopologyId topologyId_;
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return Whether the topologyId field is set.
-     */
-    @java.lang.Override
-    public boolean hasTopologyId() {
-      return topologyId_ != null;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     * @return The topologyId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyId getTopologyId() {
-      return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-    }
-    /**
-     * <code>.context.TopologyId topology_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-      return getTopologyId();
+            @java.lang.Override
+            public Constraint_Exclusions 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<Constraint_Exclusions> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Constraint_Exclusions> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface ConstraintOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.ConstraintActionEnum action = 1;</code>
+         * @return The enum numeric value on the wire for action.
+         */
+        int getActionValue();
+
+        /**
+         * <code>.context.ConstraintActionEnum action = 1;</code>
+         * @return The action.
+         */
+        context.ContextOuterClass.ConstraintActionEnum getAction();
+
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         * @return Whether the custom field is set.
+         */
+        boolean hasCustom();
+
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         * @return The custom.
+         */
+        context.ContextOuterClass.Constraint_Custom getCustom();
+
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         */
+        context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();
+
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         * @return Whether the schedule field is set.
+         */
+        boolean hasSchedule();
+
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         * @return The schedule.
+         */
+        context.ContextOuterClass.Constraint_Schedule getSchedule();
+
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         */
+        context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();
+
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         * @return Whether the endpointLocation field is set.
+         */
+        boolean hasEndpointLocation();
+
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         * @return The endpointLocation.
+         */
+        context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();
+
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         */
+        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();
+
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         * @return Whether the endpointPriority field is set.
+         */
+        boolean hasEndpointPriority();
+
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         * @return The endpointPriority.
+         */
+        context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();
+
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         */
+        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();
+
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         * @return Whether the slaCapacity field is set.
+         */
+        boolean hasSlaCapacity();
+
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         * @return The slaCapacity.
+         */
+        context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();
+
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         */
+        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();
+
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         * @return Whether the slaLatency field is set.
+         */
+        boolean hasSlaLatency();
+
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         * @return The slaLatency.
+         */
+        context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();
+
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         */
+        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();
+
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         * @return Whether the slaAvailability field is set.
+         */
+        boolean hasSlaAvailability();
+
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         * @return The slaAvailability.
+         */
+        context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();
+
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         */
+        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();
+
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         * @return Whether the slaIsolation field is set.
+         */
+        boolean hasSlaIsolation();
+
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         * @return The slaIsolation.
+         */
+        context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();
+
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         */
+        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();
+
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         * @return Whether the exclusions field is set.
+         */
+        boolean hasExclusions();
+
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         * @return The exclusions.
+         */
+        context.ContextOuterClass.Constraint_Exclusions getExclusions();
+
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         */
+        context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
+
+        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
     }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 2;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
     /**
-     * <code>.context.DeviceId device_id = 2;</code>
+     * Protobuf type {@code context.Constraint}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
-    }
+    public static final class Constraint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint)
+    ConstraintOrBuilder {
 
-    public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
-    private context.ContextOuterClass.Uuid endpointUuid_;
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return Whether the endpointUuid field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointUuid() {
-      return endpointUuid_ != null;
-    }
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     * @return The endpointUuid.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getEndpointUuid() {
-      return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
-    }
-    /**
-     * <code>.context.Uuid endpoint_uuid = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-      return getEndpointUuid();
-    }
+        private static final long serialVersionUID = 0L;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        // Use Constraint.newBuilder() to construct.
+        private Constraint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private Constraint() {
+            action_ = 0;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (topologyId_ != null) {
-        output.writeMessage(1, getTopologyId());
-      }
-      if (deviceId_ != null) {
-        output.writeMessage(2, getDeviceId());
-      }
-      if (endpointUuid_ != null) {
-        output.writeMessage(3, getEndpointUuid());
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Constraint();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (topologyId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTopologyId());
-      }
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getDeviceId());
-      }
-      if (endpointUuid_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getEndpointUuid());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.EndPointId)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;
-
-      if (hasTopologyId() != other.hasTopologyId()) return false;
-      if (hasTopologyId()) {
-        if (!getTopologyId()
-            .equals(other.getTopologyId())) return false;
-      }
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (hasEndpointUuid() != other.hasEndpointUuid()) return false;
-      if (hasEndpointUuid()) {
-        if (!getEndpointUuid()
-            .equals(other.getEndpointUuid())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasTopologyId()) {
-        hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getTopologyId().hashCode();
-      }
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      if (hasEndpointUuid()) {
-        hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointUuid().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private int constraintCase_ = 0;
 
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @SuppressWarnings("serial")
+        private java.lang.Object constraint_;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Endpoint ------------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.EndPointId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointId)
-        context.ContextOuterClass.EndPointIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.EndPointId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = null;
-        } else {
-          endpointUuid_ = null;
-          endpointUuidBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointId build() {
-        context.ContextOuterClass.EndPointId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointId buildPartial() {
-        context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
-        if (topologyIdBuilder_ == null) {
-          result.topologyId_ = topologyId_;
-        } else {
-          result.topologyId_ = topologyIdBuilder_.build();
-        }
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (endpointUuidBuilder_ == null) {
-          result.endpointUuid_ = endpointUuid_;
-        } else {
-          result.endpointUuid_ = endpointUuidBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointId) {
-          return mergeFrom((context.ContextOuterClass.EndPointId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.EndPointId other) {
-        if (other == context.ContextOuterClass.EndPointId.getDefaultInstance()) return this;
-        if (other.hasTopologyId()) {
-          mergeTopologyId(other.getTopologyId());
-        }
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (other.hasEndpointUuid()) {
-          mergeEndpointUuid(other.getEndpointUuid());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.EndPointId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.TopologyId topologyId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return Whether the topologyId field is set.
-       */
-      public boolean hasTopologyId() {
-        return topologyIdBuilder_ != null || topologyId_ != null;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       * @return The topologyId.
-       */
-      public context.ContextOuterClass.TopologyId getTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        } else {
-          return topologyIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          topologyId_ = value;
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder setTopologyId(
-          context.ContextOuterClass.TopologyId.Builder builderForValue) {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = builderForValue.build();
-          onChanged();
-        } else {
-          topologyIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
-        if (topologyIdBuilder_ == null) {
-          if (topologyId_ != null) {
-            topologyId_ =
-              context.ContextOuterClass.TopologyId.newBuilder(topologyId_).mergeFrom(value).buildPartial();
-          } else {
-            topologyId_ = value;
-          }
-          onChanged();
-        } else {
-          topologyIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public Builder clearTopologyId() {
-        if (topologyIdBuilder_ == null) {
-          topologyId_ = null;
-          onChanged();
-        } else {
-          topologyId_ = null;
-          topologyIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
-        
-        onChanged();
-        return getTopologyIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
-        if (topologyIdBuilder_ != null) {
-          return topologyIdBuilder_.getMessageOrBuilder();
-        } else {
-          return topologyId_ == null ?
-              context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
-        }
-      }
-      /**
-       * <code>.context.TopologyId topology_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> 
-          getTopologyIdFieldBuilder() {
-        if (topologyIdBuilder_ == null) {
-          topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(
-                  getTopologyId(),
-                  getParentForChildren(),
-                  isClean());
-          topologyId_ = null;
-        }
-        return topologyIdBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Uuid endpointUuid_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       * @return Whether the endpointUuid field is set.
-       */
-      public boolean hasEndpointUuid() {
-        return endpointUuidBuilder_ != null || endpointUuid_ != null;
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       * @return The endpointUuid.
-       */
-      public context.ContextOuterClass.Uuid getEndpointUuid() {
-        if (endpointUuidBuilder_ == null) {
-          return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
-        } else {
-          return endpointUuidBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
-        if (endpointUuidBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointUuid_ = value;
-          onChanged();
-        } else {
-          endpointUuidBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public Builder setEndpointUuid(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointUuidBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
-        if (endpointUuidBuilder_ == null) {
-          if (endpointUuid_ != null) {
-            endpointUuid_ =
-              context.ContextOuterClass.Uuid.newBuilder(endpointUuid_).mergeFrom(value).buildPartial();
-          } else {
-            endpointUuid_ = value;
-          }
-          onChanged();
-        } else {
-          endpointUuidBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public Builder clearEndpointUuid() {
-        if (endpointUuidBuilder_ == null) {
-          endpointUuid_ = null;
-          onChanged();
-        } else {
-          endpointUuid_ = null;
-          endpointUuidBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
-        
-        onChanged();
-        return getEndpointUuidFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
-        if (endpointUuidBuilder_ != null) {
-          return endpointUuidBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointUuid_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
-        }
-      }
-      /**
-       * <code>.context.Uuid endpoint_uuid = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getEndpointUuidFieldBuilder() {
-        if (endpointUuidBuilder_ == null) {
-          endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getEndpointUuid(),
-                  getParentForChildren(),
-                  isClean());
-          endpointUuid_ = null;
-        }
-        return endpointUuidBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.EndPointId)
-    }
+            CUSTOM(2),
+            SCHEDULE(3),
+            ENDPOINT_LOCATION(4),
+            ENDPOINT_PRIORITY(5),
+            SLA_CAPACITY(6),
+            SLA_LATENCY(7),
+            SLA_AVAILABILITY(8),
+            SLA_ISOLATION(9),
+            EXCLUSIONS(10),
+            CONSTRAINT_NOT_SET(0);
 
-    // @@protoc_insertion_point(class_scope:context.EndPointId)
-    private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
-    }
+            private final int value;
 
-    public static context.ContextOuterClass.EndPointId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            private ConstraintCase(int value) {
+                this.value = value;
+            }
 
-    private static final com.google.protobuf.Parser<EndPointId>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointId>() {
-      @java.lang.Override
-      public EndPointId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EndPointId> parser() {
-      return PARSER;
-    }
+            /**
+             * @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 ConstraintCase valueOf(int value) {
+                return forNumber(value);
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<EndPointId> getParserForType() {
-      return PARSER;
-    }
+            public static ConstraintCase forNumber(int value) {
+                switch(value) {
+                    case 2:
+                        return CUSTOM;
+                    case 3:
+                        return SCHEDULE;
+                    case 4:
+                        return ENDPOINT_LOCATION;
+                    case 5:
+                        return ENDPOINT_PRIORITY;
+                    case 6:
+                        return SLA_CAPACITY;
+                    case 7:
+                        return SLA_LATENCY;
+                    case 8:
+                        return SLA_AVAILABILITY;
+                    case 9:
+                        return SLA_ISOLATION;
+                    case 10:
+                        return EXCLUSIONS;
+                    case 0:
+                        return CONSTRAINT_NOT_SET;
+                    default:
+                        return null;
+                }
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            public int getNumber() {
+                return this.value;
+            }
+        }
 
-  }
+        public ConstraintCase getConstraintCase() {
+            return ConstraintCase.forNumber(constraintCase_);
+        }
 
-  public interface EndPointOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPoint)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int ACTION_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+        private int action_ = 0;
 
-    /**
-     * <code>string name = 2;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 2;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+        /**
+         * <code>.context.ConstraintActionEnum action = 1;</code>
+         * @return The enum numeric value on the wire for action.
+         */
+        @java.lang.Override
+        public int getActionValue() {
+            return action_;
+        }
 
-    /**
-     * <code>string endpoint_type = 3;</code>
-     * @return The endpointType.
-     */
-    java.lang.String getEndpointType();
-    /**
-     * <code>string endpoint_type = 3;</code>
-     * @return The bytes for endpointType.
-     */
-    com.google.protobuf.ByteString
-        getEndpointTypeBytes();
+        /**
+         * <code>.context.ConstraintActionEnum action = 1;</code>
+         * @return The action.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConstraintActionEnum getAction() {
+            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+            return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
+        }
 
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return A list containing the kpiSampleTypes.
-     */
-    java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList();
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return The count of kpiSampleTypes.
-     */
-    int getKpiSampleTypesCount();
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @param index The index of the element to return.
-     * @return The kpiSampleTypes at the given index.
-     */
-    kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index);
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
-     */
-    java.util.List<java.lang.Integer>
-    getKpiSampleTypesValueList();
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
-     */
-    int getKpiSampleTypesValue(int index);
+        public static final int CUSTOM_FIELD_NUMBER = 2;
+
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         * @return Whether the custom field is set.
+         */
+        @java.lang.Override
+        public boolean hasCustom() {
+            return constraintCase_ == 2;
+        }
 
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return Whether the endpointLocation field is set.
-     */
-    boolean hasEndpointLocation();
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return The endpointLocation.
-     */
-    context.ContextOuterClass.Location getEndpointLocation();
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     */
-    context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.EndPoint}
-   */
-  public static final class EndPoint extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPoint)
-      EndPointOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use EndPoint.newBuilder() to construct.
-    private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private EndPoint() {
-      name_ = "";
-      endpointType_ = "";
-      kpiSampleTypes_ = java.util.Collections.emptyList();
-    }
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         * @return The custom.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Custom getCustom() {
+            if (constraintCase_ == 2) {
+                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new EndPoint();
-    }
+        /**
+         * <code>.context.Constraint_Custom custom = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
+            if (constraintCase_ == 2) {
+                return (context.ContextOuterClass.Constraint_Custom) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private EndPoint(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endpointType_ = s;
-              break;
-            }
-            case 32: {
-              int rawValue = input.readEnum();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiSampleTypes_.add(rawValue);
-              break;
-            }
-            case 34: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                kpiSampleTypes_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.Location.Builder subBuilder = null;
-              if (endpointLocation_ != null) {
-                subBuilder = endpointLocation_.toBuilder();
-              }
-              endpointLocation_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointLocation_);
-                endpointLocation_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
-    }
+        public static final int SCHEDULE_FIELD_NUMBER = 3;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
-    }
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         * @return Whether the schedule field is set.
+         */
+        @java.lang.Override
+        public boolean hasSchedule() {
+            return constraintCase_ == 3;
+        }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         * @return The schedule.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Schedule getSchedule() {
+            if (constraintCase_ == 3) {
+                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+        }
 
-    public static final int NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 2;</code>
-     * @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;
-      }
-    }
+        /**
+         * <code>.context.Constraint_Schedule schedule = 3;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
+            if (constraintCase_ == 3) {
+                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+        }
 
-    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;
-    private volatile java.lang.Object endpointType_;
-    /**
-     * <code>string endpoint_type = 3;</code>
-     * @return The endpointType.
-     */
-    @java.lang.Override
-    public java.lang.String getEndpointType() {
-      java.lang.Object ref = endpointType_;
-      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();
-        endpointType_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string endpoint_type = 3;</code>
-     * @return The bytes for endpointType.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getEndpointTypeBytes() {
-      java.lang.Object ref = endpointType_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        endpointType_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;
 
-    public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;
-    private java.util.List<java.lang.Integer> kpiSampleTypes_;
-    private static final com.google.protobuf.Internal.ListAdapter.Converter<
-        java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ =
-            new com.google.protobuf.Internal.ListAdapter.Converter<
-                java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {
-              public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(from);
-                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
-              }
-            };
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return A list containing the kpiSampleTypes.
-     */
-    @java.lang.Override
-    public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
-      return new com.google.protobuf.Internal.ListAdapter<
-          java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
-    }
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return The count of kpiSampleTypes.
-     */
-    @java.lang.Override
-    public int getKpiSampleTypesCount() {
-      return kpiSampleTypes_.size();
-    }
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @param index The index of the element to return.
-     * @return The kpiSampleTypes at the given index.
-     */
-    @java.lang.Override
-    public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
-      return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
-    }
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
-     */
-    @java.lang.Override
-    public java.util.List<java.lang.Integer>
-    getKpiSampleTypesValueList() {
-      return kpiSampleTypes_;
-    }
-    /**
-     * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
-     */
-    @java.lang.Override
-    public int getKpiSampleTypesValue(int index) {
-      return kpiSampleTypes_.get(index);
-    }
-    private int kpiSampleTypesMemoizedSerializedSize;
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         * @return Whether the endpointLocation field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointLocation() {
+            return constraintCase_ == 4;
+        }
 
-    public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.Location endpointLocation_;
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return Whether the endpointLocation field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointLocation() {
-      return endpointLocation_ != null;
-    }
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     * @return The endpointLocation.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Location getEndpointLocation() {
-      return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
-    }
-    /**
-     * <code>.context.Location endpoint_location = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-      return getEndpointLocation();
-    }
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         * @return The endpointLocation.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
+            if (constraintCase_ == 4) {
+                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointLocation.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;
+        /**
+         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
+            if (constraintCase_ == 4) {
+                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 5;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
-      }
-      if (getKpiSampleTypesList().size() > 0) {
-        output.writeUInt32NoTag(34);
-        output.writeUInt32NoTag(kpiSampleTypesMemoizedSerializedSize);
-      }
-      for (int i = 0; i < kpiSampleTypes_.size(); i++) {
-        output.writeEnumNoTag(kpiSampleTypes_.get(i));
-      }
-      if (endpointLocation_ != null) {
-        output.writeMessage(5, getEndpointLocation());
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         * @return Whether the endpointPriority field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointPriority() {
+            return constraintCase_ == 5;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
-      }
-      {
-        int dataSize = 0;
-        for (int i = 0; i < kpiSampleTypes_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeEnumSizeNoTag(kpiSampleTypes_.get(i));
-        }
-        size += dataSize;
-        if (!getKpiSampleTypesList().isEmpty()) {  size += 1;
-          size += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(dataSize);
-        }kpiSampleTypesMemoizedSerializedSize = dataSize;
-      }
-      if (endpointLocation_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getEndpointLocation());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         * @return The endpointPriority.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
+            if (constraintCase_ == 5) {
+                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.EndPoint)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;
-
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (!getEndpointType()
-          .equals(other.getEndpointType())) return false;
-      if (!kpiSampleTypes_.equals(other.kpiSampleTypes_)) return false;
-      if (hasEndpointLocation() != other.hasEndpointLocation()) return false;
-      if (hasEndpointLocation()) {
-        if (!getEndpointLocation()
-            .equals(other.getEndpointLocation())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
+            if (constraintCase_ == 5) {
+                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getEndpointType().hashCode();
-      if (getKpiSampleTypesCount() > 0) {
-        hash = (37 * hash) + KPI_SAMPLE_TYPES_FIELD_NUMBER;
-        hash = (53 * hash) + kpiSampleTypes_.hashCode();
-      }
-      if (hasEndpointLocation()) {
-        hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointLocation().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final int SLA_CAPACITY_FIELD_NUMBER = 6;
 
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPoint parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPoint parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         * @return Whether the slaCapacity field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaCapacity() {
+            return constraintCase_ == 6;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         * @return The slaCapacity.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
+            if (constraintCase_ == 6) {
+                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.EndPoint}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPoint)
-        context.ContextOuterClass.EndPointOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.EndPoint.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        name_ = "";
-
-        endpointType_ = "";
-
-        kpiSampleTypes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = null;
-        } else {
-          endpointLocation_ = null;
-          endpointLocationBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPoint.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPoint build() {
-        context.ContextOuterClass.EndPoint result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPoint buildPartial() {
-        context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
-        int from_bitField0_ = bitField0_;
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        result.name_ = name_;
-        result.endpointType_ = endpointType_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.kpiSampleTypes_ = kpiSampleTypes_;
-        if (endpointLocationBuilder_ == null) {
-          result.endpointLocation_ = endpointLocation_;
-        } else {
-          result.endpointLocation_ = endpointLocationBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPoint) {
-          return mergeFrom((context.ContextOuterClass.EndPoint)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.EndPoint other) {
-        if (other == context.ContextOuterClass.EndPoint.getDefaultInstance()) return this;
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (!other.getEndpointType().isEmpty()) {
-          endpointType_ = other.endpointType_;
-          onChanged();
-        }
-        if (!other.kpiSampleTypes_.isEmpty()) {
-          if (kpiSampleTypes_.isEmpty()) {
-            kpiSampleTypes_ = other.kpiSampleTypes_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureKpiSampleTypesIsMutable();
-            kpiSampleTypes_.addAll(other.kpiSampleTypes_);
-          }
-          onChanged();
-        }
-        if (other.hasEndpointLocation()) {
-          mergeEndpointLocation(other.getEndpointLocation());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.EndPoint parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPoint) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 2;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object endpointType_ = "";
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @return The endpointType.
-       */
-      public java.lang.String getEndpointType() {
-        java.lang.Object ref = endpointType_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          endpointType_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @return The bytes for endpointType.
-       */
-      public com.google.protobuf.ByteString
-          getEndpointTypeBytes() {
-        java.lang.Object ref = endpointType_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          endpointType_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @param value The endpointType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointType(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endpointType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEndpointType() {
-        
-        endpointType_ = getDefaultInstance().getEndpointType();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_type = 3;</code>
-       * @param value The bytes for endpointType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endpointType_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<java.lang.Integer> kpiSampleTypes_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiSampleTypesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
-          bitField0_ |= 0x00000001;
-        }
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return A list containing the kpiSampleTypes.
-       */
-      public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
-        return new com.google.protobuf.Internal.ListAdapter<
-            java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return The count of kpiSampleTypes.
-       */
-      public int getKpiSampleTypesCount() {
-        return kpiSampleTypes_.size();
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param index The index of the element to return.
-       * @return The kpiSampleTypes at the given index.
-       */
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
-        return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param index The index to set the value at.
-       * @param value The kpiSampleTypes to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleTypes(
-          int index, kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.set(index, value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param value The kpiSampleTypes to add.
-       * @return This builder for chaining.
-       */
-      public Builder addKpiSampleTypes(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.add(value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param values The kpiSampleTypes to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllKpiSampleTypes(
-          java.lang.Iterable<? extends kpi_sample_types.KpiSampleTypes.KpiSampleType> values) {
-        ensureKpiSampleTypesIsMutable();
-        for (kpi_sample_types.KpiSampleTypes.KpiSampleType value : values) {
-          kpiSampleTypes_.add(value.getNumber());
-        }
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiSampleTypes() {
-        kpiSampleTypes_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
-       */
-      public java.util.List<java.lang.Integer>
-      getKpiSampleTypesValueList() {
-        return java.util.Collections.unmodifiableList(kpiSampleTypes_);
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
-       */
-      public int getKpiSampleTypesValue(int index) {
-        return kpiSampleTypes_.get(index);
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleTypesValue(
-          int index, int value) {
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param value The enum numeric value on the wire for kpiSampleTypes to add.
-       * @return This builder for chaining.
-       */
-      public Builder addKpiSampleTypesValue(int value) {
-        ensureKpiSampleTypesIsMutable();
-        kpiSampleTypes_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
-       * @param values The enum numeric values on the wire for kpiSampleTypes to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllKpiSampleTypesValue(
-          java.lang.Iterable<java.lang.Integer> values) {
-        ensureKpiSampleTypesIsMutable();
-        for (int value : values) {
-          kpiSampleTypes_.add(value);
-        }
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.Location endpointLocation_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> endpointLocationBuilder_;
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       * @return Whether the endpointLocation field is set.
-       */
-      public boolean hasEndpointLocation() {
-        return endpointLocationBuilder_ != null || endpointLocation_ != null;
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       * @return The endpointLocation.
-       */
-      public context.ContextOuterClass.Location getEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
-        } else {
-          return endpointLocationBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
-        if (endpointLocationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointLocation_ = value;
-          onChanged();
-        } else {
-          endpointLocationBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public Builder setEndpointLocation(
-          context.ContextOuterClass.Location.Builder builderForValue) {
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointLocationBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
-        if (endpointLocationBuilder_ == null) {
-          if (endpointLocation_ != null) {
-            endpointLocation_ =
-              context.ContextOuterClass.Location.newBuilder(endpointLocation_).mergeFrom(value).buildPartial();
-          } else {
-            endpointLocation_ = value;
-          }
-          onChanged();
-        } else {
-          endpointLocationBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public Builder clearEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          endpointLocation_ = null;
-          onChanged();
-        } else {
-          endpointLocation_ = null;
-          endpointLocationBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
-        
-        onChanged();
-        return getEndpointLocationFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
-        if (endpointLocationBuilder_ != null) {
-          return endpointLocationBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointLocation_ == null ?
-              context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
-        }
-      }
-      /**
-       * <code>.context.Location endpoint_location = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> 
-          getEndpointLocationFieldBuilder() {
-        if (endpointLocationBuilder_ == null) {
-          endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(
-                  getEndpointLocation(),
-                  getParentForChildren(),
-                  isClean());
-          endpointLocation_ = null;
-        }
-        return endpointLocationBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.EndPoint)
-    }
+        /**
+         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
+            if (constraintCase_ == 6) {
+                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+        }
 
-    // @@protoc_insertion_point(class_scope:context.EndPoint)
-    private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
-    }
+        public static final int SLA_LATENCY_FIELD_NUMBER = 7;
 
-    public static context.ContextOuterClass.EndPoint getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         * @return Whether the slaLatency field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaLatency() {
+            return constraintCase_ == 7;
+        }
 
-    private static final com.google.protobuf.Parser<EndPoint>
-        PARSER = new com.google.protobuf.AbstractParser<EndPoint>() {
-      @java.lang.Override
-      public EndPoint parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPoint(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EndPoint> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         * @return The slaLatency.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
+            if (constraintCase_ == 7) {
+                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<EndPoint> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
+            if (constraintCase_ == 7) {
+                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int SLA_AVAILABILITY_FIELD_NUMBER = 8;
 
-  }
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         * @return Whether the slaAvailability field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaAvailability() {
+            return constraintCase_ == 8;
+        }
 
-  public interface EndPointNameOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointName)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         * @return The slaAvailability.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
+            if (constraintCase_ == 8) {
+                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        }
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+        /**
+         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
+            if (constraintCase_ == 8) {
+                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+        }
 
-    /**
-     * <code>string device_name = 2;</code>
-     * @return The deviceName.
-     */
-    java.lang.String getDeviceName();
-    /**
-     * <code>string device_name = 2;</code>
-     * @return The bytes for deviceName.
-     */
-    com.google.protobuf.ByteString
-        getDeviceNameBytes();
+        public static final int SLA_ISOLATION_FIELD_NUMBER = 9;
 
-    /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The endpointName.
-     */
-    java.lang.String getEndpointName();
-    /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The bytes for endpointName.
-     */
-    com.google.protobuf.ByteString
-        getEndpointNameBytes();
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         * @return Whether the slaIsolation field is set.
+         */
+        @java.lang.Override
+        public boolean hasSlaIsolation() {
+            return constraintCase_ == 9;
+        }
 
-    /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The endpointType.
-     */
-    java.lang.String getEndpointType();
-    /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The bytes for endpointType.
-     */
-    com.google.protobuf.ByteString
-        getEndpointTypeBytes();
-  }
-  /**
-   * Protobuf type {@code context.EndPointName}
-   */
-  public static final class EndPointName extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointName)
-      EndPointNameOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use EndPointName.newBuilder() to construct.
-    private EndPointName(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private EndPointName() {
-      deviceName_ = "";
-      endpointName_ = "";
-      endpointType_ = "";
-    }
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         * @return The slaIsolation.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
+            if (constraintCase_ == 9) {
+                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new EndPointName();
-    }
+        /**
+         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
+            if (constraintCase_ == 9) {
+                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private EndPointName(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              deviceName_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endpointName_ = s;
-              break;
-            }
-            case 34: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              endpointType_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
-    }
+        public static final int EXCLUSIONS_FIELD_NUMBER = 10;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
-    }
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         * @return Whether the exclusions field is set.
+         */
+        @java.lang.Override
+        public boolean hasExclusions() {
+            return constraintCase_ == 10;
+        }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         * @return The exclusions.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
+            if (constraintCase_ == 10) {
+                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+        }
 
-    public static final int DEVICE_NAME_FIELD_NUMBER = 2;
-    private volatile java.lang.Object deviceName_;
-    /**
-     * <code>string device_name = 2;</code>
-     * @return The deviceName.
-     */
-    @java.lang.Override
-    public java.lang.String getDeviceName() {
-      java.lang.Object ref = deviceName_;
-      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();
-        deviceName_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string device_name = 2;</code>
-     * @return The bytes for deviceName.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getDeviceNameBytes() {
-      java.lang.Object ref = deviceName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        deviceName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        /**
+         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
+            if (constraintCase_ == 10) {
+                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+            }
+            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+        }
 
-    public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;
-    private volatile java.lang.Object endpointName_;
-    /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The endpointName.
-     */
-    @java.lang.Override
-    public java.lang.String getEndpointName() {
-      java.lang.Object ref = endpointName_;
-      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();
-        endpointName_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string endpoint_name = 3;</code>
-     * @return The bytes for endpointName.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getEndpointNameBytes() {
-      java.lang.Object ref = endpointName_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        endpointName_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        private byte memoizedIsInitialized = -1;
 
-    public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;
-    private volatile java.lang.Object endpointType_;
-    /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The endpointType.
-     */
-    @java.lang.Override
-    public java.lang.String getEndpointType() {
-      java.lang.Object ref = endpointType_;
-      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();
-        endpointType_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string endpoint_type = 4;</code>
-     * @return The bytes for endpointType.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getEndpointTypeBytes() {
-      java.lang.Object ref = endpointType_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        endpointType_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        @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 (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
+                output.writeEnum(1, action_);
+            }
+            if (constraintCase_ == 2) {
+                output.writeMessage(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
+            }
+            if (constraintCase_ == 3) {
+                output.writeMessage(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
+            }
+            if (constraintCase_ == 4) {
+                output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+            }
+            if (constraintCase_ == 5) {
+                output.writeMessage(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+            }
+            if (constraintCase_ == 6) {
+                output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+            }
+            if (constraintCase_ == 7) {
+                output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+            }
+            if (constraintCase_ == 8) {
+                output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+            }
+            if (constraintCase_ == 9) {
+                output.writeMessage(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            }
+            if (constraintCase_ == 10) {
+                output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
+            }
+            if (constraintCase_ == 2) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
+            }
+            if (constraintCase_ == 3) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
+            }
+            if (constraintCase_ == 4) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
+            }
+            if (constraintCase_ == 5) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
+            }
+            if (constraintCase_ == 6) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
+            }
+            if (constraintCase_ == 7) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
+            }
+            if (constraintCase_ == 8) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
+            }
+            if (constraintCase_ == 9) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
+            }
+            if (constraintCase_ == 10) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.Constraint)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;
+            if (action_ != other.action_)
+                return false;
+            if (!getConstraintCase().equals(other.getConstraintCase()))
+                return false;
+            switch(constraintCase_) {
+                case 2:
+                    if (!getCustom().equals(other.getCustom()))
+                        return false;
+                    break;
+                case 3:
+                    if (!getSchedule().equals(other.getSchedule()))
+                        return false;
+                    break;
+                case 4:
+                    if (!getEndpointLocation().equals(other.getEndpointLocation()))
+                        return false;
+                    break;
+                case 5:
+                    if (!getEndpointPriority().equals(other.getEndpointPriority()))
+                        return false;
+                    break;
+                case 6:
+                    if (!getSlaCapacity().equals(other.getSlaCapacity()))
+                        return false;
+                    break;
+                case 7:
+                    if (!getSlaLatency().equals(other.getSlaLatency()))
+                        return false;
+                    break;
+                case 8:
+                    if (!getSlaAvailability().equals(other.getSlaAvailability()))
+                        return false;
+                    break;
+                case 9:
+                    if (!getSlaIsolation().equals(other.getSlaIsolation()))
+                        return false;
+                    break;
+                case 10:
+                    if (!getExclusions().equals(other.getExclusions()))
+                        return false;
+                    break;
+                case 0:
+                default:
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (!getDeviceNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
-      }
-      if (!getEndpointNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            hash = (37 * hash) + ACTION_FIELD_NUMBER;
+            hash = (53 * hash) + action_;
+            switch(constraintCase_) {
+                case 2:
+                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
+                    hash = (53 * hash) + getCustom().hashCode();
+                    break;
+                case 3:
+                    hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
+                    hash = (53 * hash) + getSchedule().hashCode();
+                    break;
+                case 4:
+                    hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
+                    hash = (53 * hash) + getEndpointLocation().hashCode();
+                    break;
+                case 5:
+                    hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getEndpointPriority().hashCode();
+                    break;
+                case 6:
+                    hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaCapacity().hashCode();
+                    break;
+                case 7:
+                    hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaLatency().hashCode();
+                    break;
+                case 8:
+                    hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaAvailability().hashCode();
+                    break;
+                case 9:
+                    hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
+                    hash = (53 * hash) + getSlaIsolation().hashCode();
+                    break;
+                case 10:
+                    hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
+                    hash = (53 * hash) + getExclusions().hashCode();
+                    break;
+                case 0:
+                default:
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (!getDeviceNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
-      }
-      if (!getEndpointNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
-      }
-      if (!getEndpointTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.EndPointName)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.EndPointName other = (context.ContextOuterClass.EndPointName) obj;
-
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (!getDeviceName()
-          .equals(other.getDeviceName())) return false;
-      if (!getEndpointName()
-          .equals(other.getEndpointName())) return false;
-      if (!getEndpointType()
-          .equals(other.getEndpointType())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      hash = (37 * hash) + DEVICE_NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getDeviceName().hashCode();
-      hash = (37 * hash) + ENDPOINT_NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getEndpointName().hashCode();
-      hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getEndpointType().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointName parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointName parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointName prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.EndPointName}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointName)
-        context.ContextOuterClass.EndPointNameOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.EndPointName.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        deviceName_ = "";
-
-        endpointName_ = "";
-
-        endpointType_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointName.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointName build() {
-        context.ContextOuterClass.EndPointName result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointName buildPartial() {
-        context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        result.deviceName_ = deviceName_;
-        result.endpointName_ = endpointName_;
-        result.endpointType_ = endpointType_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointName) {
-          return mergeFrom((context.ContextOuterClass.EndPointName)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.EndPointName other) {
-        if (other == context.ContextOuterClass.EndPointName.getDefaultInstance()) return this;
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (!other.getDeviceName().isEmpty()) {
-          deviceName_ = other.deviceName_;
-          onChanged();
-        }
-        if (!other.getEndpointName().isEmpty()) {
-          endpointName_ = other.endpointName_;
-          onChanged();
-        }
-        if (!other.getEndpointType().isEmpty()) {
-          endpointType_ = other.endpointType_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.EndPointName parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointName) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private java.lang.Object deviceName_ = "";
-      /**
-       * <code>string device_name = 2;</code>
-       * @return The deviceName.
-       */
-      public java.lang.String getDeviceName() {
-        java.lang.Object ref = deviceName_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          deviceName_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string device_name = 2;</code>
-       * @return The bytes for deviceName.
-       */
-      public com.google.protobuf.ByteString
-          getDeviceNameBytes() {
-        java.lang.Object ref = deviceName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          deviceName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string device_name = 2;</code>
-       * @param value The deviceName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        deviceName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_name = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeviceName() {
-        
-        deviceName_ = getDefaultInstance().getDeviceName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string device_name = 2;</code>
-       * @param value The bytes for deviceName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeviceNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        deviceName_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object endpointName_ = "";
-      /**
-       * <code>string endpoint_name = 3;</code>
-       * @return The endpointName.
-       */
-      public java.lang.String getEndpointName() {
-        java.lang.Object ref = endpointName_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          endpointName_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_name = 3;</code>
-       * @return The bytes for endpointName.
-       */
-      public com.google.protobuf.ByteString
-          getEndpointNameBytes() {
-        java.lang.Object ref = endpointName_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          endpointName_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_name = 3;</code>
-       * @param value The endpointName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointName(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endpointName_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_name = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEndpointName() {
-        
-        endpointName_ = getDefaultInstance().getEndpointName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_name = 3;</code>
-       * @param value The bytes for endpointName to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endpointName_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object endpointType_ = "";
-      /**
-       * <code>string endpoint_type = 4;</code>
-       * @return The endpointType.
-       */
-      public java.lang.String getEndpointType() {
-        java.lang.Object ref = endpointType_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          endpointType_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_type = 4;</code>
-       * @return The bytes for endpointType.
-       */
-      public com.google.protobuf.ByteString
-          getEndpointTypeBytes() {
-        java.lang.Object ref = endpointType_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          endpointType_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string endpoint_type = 4;</code>
-       * @param value The endpointType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointType(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        endpointType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_type = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearEndpointType() {
-        
-        endpointType_ = getDefaultInstance().getEndpointType();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string endpoint_type = 4;</code>
-       * @param value The bytes for endpointType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setEndpointTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        endpointType_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.EndPointName)
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointName)
-    private static final context.ContextOuterClass.EndPointName DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointName();
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.EndPointName getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    private static final com.google.protobuf.Parser<EndPointName>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointName>() {
-      @java.lang.Override
-      public EndPointName parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointName(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EndPointName> parser() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<EndPointName> getParserForType() {
-      return PARSER;
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-  public interface EndPointIdListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointIdList)
-      com.google.protobuf.MessageOrBuilder {
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    context.ContextOuterClass.EndPointId getEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    int getEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.EndPointIdList}
-   */
-  public static final class EndPointIdList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointIdList)
-      EndPointIdListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use EndPointIdList.newBuilder() to construct.
-    private EndPointIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private EndPointIdList() {
-      endpointIds_ = java.util.Collections.emptyList();
-    }
+        public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new EndPointIdList();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private EndPointIdList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              endpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
-    }
+        /**
+         * Protobuf type {@code context.Constraint}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint)
+        context.ContextOuterClass.ConstraintOrBuilder {
 
-    public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-      return endpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList() {
-      return endpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getEndpointIdsCount() {
-      return endpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-      return endpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index) {
-      return endpointIds_.get(index);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            // Construct using context.ContextOuterClass.Constraint.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < endpointIds_.size(); i++) {
-        output.writeMessage(1, endpointIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < endpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, endpointIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                action_ = 0;
+                if (customBuilder_ != null) {
+                    customBuilder_.clear();
+                }
+                if (scheduleBuilder_ != null) {
+                    scheduleBuilder_.clear();
+                }
+                if (endpointLocationBuilder_ != null) {
+                    endpointLocationBuilder_.clear();
+                }
+                if (endpointPriorityBuilder_ != null) {
+                    endpointPriorityBuilder_.clear();
+                }
+                if (slaCapacityBuilder_ != null) {
+                    slaCapacityBuilder_.clear();
+                }
+                if (slaLatencyBuilder_ != null) {
+                    slaLatencyBuilder_.clear();
+                }
+                if (slaAvailabilityBuilder_ != null) {
+                    slaAvailabilityBuilder_.clear();
+                }
+                if (slaIsolationBuilder_ != null) {
+                    slaIsolationBuilder_.clear();
+                }
+                if (exclusionsBuilder_ != null) {
+                    exclusionsBuilder_.clear();
+                }
+                constraintCase_ = 0;
+                constraint_ = null;
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.EndPointIdList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
-
-      if (!getEndpointIdsList()
-          .equals(other.getEndpointIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getEndpointIdsCount() > 0) {
-        hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
+                return context.ContextOuterClass.Constraint.getDefaultInstance();
+            }
 
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointIdList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint build() {
+                context.ContextOuterClass.Constraint result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointIdList 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
+            public context.ContextOuterClass.Constraint buildPartial() {
+                context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.EndPointIdList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointIdList)
-        context.ContextOuterClass.EndPointIdListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getEndpointIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointIdList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList build() {
-        context.ContextOuterClass.EndPointIdList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointIdList buildPartial() {
-        context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
-        int from_bitField0_ = bitField0_;
-        if (endpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.endpointIds_ = endpointIds_;
-        } else {
-          result.endpointIds_ = endpointIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointIdList) {
-          return mergeFrom((context.ContextOuterClass.EndPointIdList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.EndPointIdList other) {
-        if (other == context.ContextOuterClass.EndPointIdList.getDefaultInstance()) return this;
-        if (endpointIdsBuilder_ == null) {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIds_.isEmpty()) {
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureEndpointIdsIsMutable();
-              endpointIds_.addAll(other.endpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIdsBuilder_.isEmpty()) {
-              endpointIdsBuilder_.dispose();
-              endpointIdsBuilder_ = null;
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              endpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getEndpointIdsFieldBuilder() : null;
-            } else {
-              endpointIdsBuilder_.addAllMessages(other.endpointIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.EndPointIdList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointIdList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-        if (endpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(endpointIds_);
-        } else {
-          return endpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public int getEndpointIdsCount() {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.size();
-        } else {
-          return endpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);
-        } else {
-          return endpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder addEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(index, value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder addEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder addEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder addAllEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, endpointIds_);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder clearEndpointIds() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public Builder removeEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.remove(index);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-          int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);  } else {
-          return endpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getEndpointIdsOrBuilderList() {
-        if (endpointIdsBuilder_ != null) {
-          return endpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(endpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getEndpointIdsBuilderList() {
-        return getEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdsFieldBuilder() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  endpointIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          endpointIds_ = null;
-        }
-        return endpointIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.EndPointIdList)
-    }
+            private void buildPartial0(context.ContextOuterClass.Constraint result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.action_ = action_;
+                }
+            }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointIdList)
-    private static final context.ContextOuterClass.EndPointIdList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointIdList();
-    }
+            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
+                result.constraintCase_ = constraintCase_;
+                result.constraint_ = this.constraint_;
+                if (constraintCase_ == 2 && customBuilder_ != null) {
+                    result.constraint_ = customBuilder_.build();
+                }
+                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
+                    result.constraint_ = scheduleBuilder_.build();
+                }
+                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
+                    result.constraint_ = endpointLocationBuilder_.build();
+                }
+                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
+                    result.constraint_ = endpointPriorityBuilder_.build();
+                }
+                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
+                    result.constraint_ = slaCapacityBuilder_.build();
+                }
+                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
+                    result.constraint_ = slaLatencyBuilder_.build();
+                }
+                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
+                    result.constraint_ = slaAvailabilityBuilder_.build();
+                }
+                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
+                    result.constraint_ = slaIsolationBuilder_.build();
+                }
+                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
+                    result.constraint_ = exclusionsBuilder_.build();
+                }
+            }
 
-    public static context.ContextOuterClass.EndPointIdList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.Constraint) {
+                    return mergeFrom((context.ContextOuterClass.Constraint) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    private static final com.google.protobuf.Parser<EndPointIdList>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointIdList>() {
-      @java.lang.Override
-      public EndPointIdList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointIdList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EndPointIdList> parser() {
-      return PARSER;
-    }
+            public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
+                if (other == context.ContextOuterClass.Constraint.getDefaultInstance())
+                    return this;
+                if (other.action_ != 0) {
+                    setActionValue(other.getActionValue());
+                }
+                switch(other.getConstraintCase()) {
+                    case CUSTOM:
+                        {
+                            mergeCustom(other.getCustom());
+                            break;
+                        }
+                    case SCHEDULE:
+                        {
+                            mergeSchedule(other.getSchedule());
+                            break;
+                        }
+                    case ENDPOINT_LOCATION:
+                        {
+                            mergeEndpointLocation(other.getEndpointLocation());
+                            break;
+                        }
+                    case ENDPOINT_PRIORITY:
+                        {
+                            mergeEndpointPriority(other.getEndpointPriority());
+                            break;
+                        }
+                    case SLA_CAPACITY:
+                        {
+                            mergeSlaCapacity(other.getSlaCapacity());
+                            break;
+                        }
+                    case SLA_LATENCY:
+                        {
+                            mergeSlaLatency(other.getSlaLatency());
+                            break;
+                        }
+                    case SLA_AVAILABILITY:
+                        {
+                            mergeSlaAvailability(other.getSlaAvailability());
+                            break;
+                        }
+                    case SLA_ISOLATION:
+                        {
+                            mergeSlaIsolation(other.getSlaIsolation());
+                            break;
+                        }
+                    case EXCLUSIONS:
+                        {
+                            mergeExclusions(other.getExclusions());
+                            break;
+                        }
+                    case CONSTRAINT_NOT_SET:
+                        {
+                            break;
+                        }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<EndPointIdList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @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:
+                                {
+                                    action_ = input.readEnum();
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 8
+                            case 18:
+                                {
+                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 2;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 3;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 4;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 5;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 6;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 7;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 8;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 9;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
+                                    constraintCase_ = 10;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-  }
+            private int constraintCase_ = 0;
 
-  public interface EndPointNameListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.EndPointNameList)
-      com.google.protobuf.MessageOrBuilder {
+            private java.lang.Object constraint_;
 
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointName> 
-        getEndpointNamesList();
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    context.ContextOuterClass.EndPointName getEndpointNames(int index);
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    int getEndpointNamesCount();
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-        getEndpointNamesOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.EndPointNameList}
-   */
-  public static final class EndPointNameList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.EndPointNameList)
-      EndPointNameListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use EndPointNameList.newBuilder() to construct.
-    private EndPointNameList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private EndPointNameList() {
-      endpointNames_ = java.util.Collections.emptyList();
-    }
+            public ConstraintCase getConstraintCase() {
+                return ConstraintCase.forNumber(constraintCase_);
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new EndPointNameList();
-    }
+            public Builder clearConstraint() {
+                constraintCase_ = 0;
+                constraint_ = null;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private EndPointNameList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              endpointNames_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
-    }
+            private int action_ = 0;
 
-    public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;
-    private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
-      return endpointNames_;
-    }
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-        getEndpointNamesOrBuilderList() {
-      return endpointNames_;
-    }
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    @java.lang.Override
-    public int getEndpointNamesCount() {
-      return endpointNames_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
-      return endpointNames_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-        int index) {
-      return endpointNames_.get(index);
-    }
+            /**
+             * <code>.context.ConstraintActionEnum action = 1;</code>
+             * @return The enum numeric value on the wire for action.
+             */
+            @java.lang.Override
+            public int getActionValue() {
+                return action_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.ConstraintActionEnum action = 1;</code>
+             * @param value The enum numeric value on the wire for action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setActionValue(int value) {
+                action_ = value;
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.ConstraintActionEnum action = 1;</code>
+             * @return The action.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.ConstraintActionEnum getAction() {
+                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
+                return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < endpointNames_.size(); i++) {
-        output.writeMessage(1, endpointNames_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.ConstraintActionEnum action = 1;</code>
+             * @param value The action to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAction(context.ContextOuterClass.ConstraintActionEnum value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000001;
+                action_ = value.getNumber();
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < endpointNames_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, endpointNames_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.ConstraintActionEnum action = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAction() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                action_ = 0;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.EndPointNameList)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
-
-      if (!getEndpointNamesList()
-          .equals(other.getEndpointNamesList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> customBuilder_;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getEndpointNamesCount() > 0) {
-        hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointNamesList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             * @return Whether the custom field is set.
+             */
+            @java.lang.Override
+            public boolean hasCustom() {
+                return constraintCase_ == 2;
+            }
 
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.EndPointNameList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             * @return The custom.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Custom getCustom() {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2) {
+                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 2) {
+                        return customBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.EndPointNameList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
+                if (customBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(value);
+                }
+                constraintCase_ = 2;
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.EndPointNameList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.EndPointNameList)
-        context.ContextOuterClass.EndPointNameListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getEndpointNamesFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointNamesBuilder_ == null) {
-          endpointNames_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          endpointNamesBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
-        return context.ContextOuterClass.EndPointNameList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList build() {
-        context.ContextOuterClass.EndPointNameList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.EndPointNameList buildPartial() {
-        context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
-        int from_bitField0_ = bitField0_;
-        if (endpointNamesBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.endpointNames_ = endpointNames_;
-        } else {
-          result.endpointNames_ = endpointNamesBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.EndPointNameList) {
-          return mergeFrom((context.ContextOuterClass.EndPointNameList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.EndPointNameList other) {
-        if (other == context.ContextOuterClass.EndPointNameList.getDefaultInstance()) return this;
-        if (endpointNamesBuilder_ == null) {
-          if (!other.endpointNames_.isEmpty()) {
-            if (endpointNames_.isEmpty()) {
-              endpointNames_ = other.endpointNames_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureEndpointNamesIsMutable();
-              endpointNames_.addAll(other.endpointNames_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.endpointNames_.isEmpty()) {
-            if (endpointNamesBuilder_.isEmpty()) {
-              endpointNamesBuilder_.dispose();
-              endpointNamesBuilder_ = null;
-              endpointNames_ = other.endpointNames_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              endpointNamesBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getEndpointNamesFieldBuilder() : null;
-            } else {
-              endpointNamesBuilder_.addAllMessages(other.endpointNames_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.EndPointNameList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.EndPointNameList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_ =
-        java.util.Collections.emptyList();
-      private void ensureEndpointNamesIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>(endpointNames_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> endpointNamesBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
-        if (endpointNamesBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(endpointNames_);
-        } else {
-          return endpointNamesBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public int getEndpointNamesCount() {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.size();
-        } else {
-          return endpointNamesBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.get(index);
-        } else {
-          return endpointNamesBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder setEndpointNames(
-          int index, context.ContextOuterClass.EndPointName value) {
-        if (endpointNamesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointNamesIsMutable();
-          endpointNames_.set(index, value);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder setEndpointNames(
-          int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointNamesBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder addEndpointNames(context.ContextOuterClass.EndPointName value) {
-        if (endpointNamesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(value);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder addEndpointNames(
-          int index, context.ContextOuterClass.EndPointName value) {
-        if (endpointNamesBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(index, value);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder addEndpointNames(
-          context.ContextOuterClass.EndPointName.Builder builderForValue) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(builderForValue.build());
-          onChanged();
-        } else {
-          endpointNamesBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder addEndpointNames(
-          int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointNamesBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder addAllEndpointNames(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointName> values) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, endpointNames_);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder clearEndpointNames() {
-        if (endpointNamesBuilder_ == null) {
-          endpointNames_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public Builder removeEndpointNames(int index) {
-        if (endpointNamesBuilder_ == null) {
-          ensureEndpointNamesIsMutable();
-          endpointNames_.remove(index);
-          onChanged();
-        } else {
-          endpointNamesBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointName.Builder getEndpointNamesBuilder(
-          int index) {
-        return getEndpointNamesFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(
-          int index) {
-        if (endpointNamesBuilder_ == null) {
-          return endpointNames_.get(index);  } else {
-          return endpointNamesBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> 
-           getEndpointNamesOrBuilderList() {
-        if (endpointNamesBuilder_ != null) {
-          return endpointNamesBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(endpointNames_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder() {
-        return getEndpointNamesFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointName.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder(
-          int index) {
-        return getEndpointNamesFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointName.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointName endpoint_names = 1;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointName.Builder> 
-           getEndpointNamesBuilderList() {
-        return getEndpointNamesFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> 
-          getEndpointNamesFieldBuilder() {
-        if (endpointNamesBuilder_ == null) {
-          endpointNamesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder>(
-                  endpointNames_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          endpointNames_ = null;
-        }
-        return endpointNamesBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.EndPointNameList)
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            public Builder setCustom(context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
+                if (customBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    customBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 2;
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.EndPointNameList)
-    private static final context.ContextOuterClass.EndPointNameList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointNameList();
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2 && constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 2) {
+                        customBuilder_.mergeFrom(value);
+                    } else {
+                        customBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 2;
+                return this;
+            }
 
-    public static context.ContextOuterClass.EndPointNameList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            public Builder clearCustom() {
+                if (customBuilder_ == null) {
+                    if (constraintCase_ == 2) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 2) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    customBuilder_.clear();
+                }
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<EndPointNameList>
-        PARSER = new com.google.protobuf.AbstractParser<EndPointNameList>() {
-      @java.lang.Override
-      public EndPointNameList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new EndPointNameList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<EndPointNameList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
+                return getCustomFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<EndPointNameList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
+                if ((constraintCase_ == 2) && (customBuilder_ != null)) {
+                    return customBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 2) {
+                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_Custom custom = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> getCustomFieldBuilder() {
+                if (customBuilder_ == null) {
+                    if (!(constraintCase_ == 2)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
+                    }
+                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder>((context.ContextOuterClass.Constraint_Custom) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 2;
+                onChanged();
+                return customBuilder_;
+            }
 
-  }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> scheduleBuilder_;
 
-  public interface ConfigRule_CustomOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConfigRule_Custom)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             * @return Whether the schedule field is set.
+             */
+            @java.lang.Override
+            public boolean hasSchedule() {
+                return constraintCase_ == 3;
+            }
 
-    /**
-     * <code>string resource_key = 1;</code>
-     * @return The resourceKey.
-     */
-    java.lang.String getResourceKey();
-    /**
-     * <code>string resource_key = 1;</code>
-     * @return The bytes for resourceKey.
-     */
-    com.google.protobuf.ByteString
-        getResourceKeyBytes();
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             * @return The schedule.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Schedule getSchedule() {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3) {
+                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 3) {
+                        return scheduleBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                }
+            }
 
-    /**
-     * <code>string resource_value = 2;</code>
-     * @return The resourceValue.
-     */
-    java.lang.String getResourceValue();
-    /**
-     * <code>string resource_value = 2;</code>
-     * @return The bytes for resourceValue.
-     */
-    com.google.protobuf.ByteString
-        getResourceValueBytes();
-  }
-  /**
-   * Protobuf type {@code context.ConfigRule_Custom}
-   */
-  public static final class ConfigRule_Custom extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConfigRule_Custom)
-      ConfigRule_CustomOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConfigRule_Custom.newBuilder() to construct.
-    private ConfigRule_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConfigRule_Custom() {
-      resourceKey_ = "";
-      resourceValue_ = "";
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
+                if (scheduleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    scheduleBuilder_.setMessage(value);
+                }
+                constraintCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConfigRule_Custom();
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
+                if (scheduleBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    scheduleBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConfigRule_Custom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              resourceKey_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              resourceValue_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3 && constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 3) {
+                        scheduleBuilder_.mergeFrom(value);
+                    } else {
+                        scheduleBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 3;
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            public Builder clearSchedule() {
+                if (scheduleBuilder_ == null) {
+                    if (constraintCase_ == 3) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 3) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    scheduleBuilder_.clear();
+                }
+                return this;
+            }
 
-    public static final int RESOURCE_KEY_FIELD_NUMBER = 1;
-    private volatile java.lang.Object resourceKey_;
-    /**
-     * <code>string resource_key = 1;</code>
-     * @return The resourceKey.
-     */
-    @java.lang.Override
-    public java.lang.String getResourceKey() {
-      java.lang.Object ref = resourceKey_;
-      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();
-        resourceKey_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string resource_key = 1;</code>
-     * @return The bytes for resourceKey.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getResourceKeyBytes() {
-      java.lang.Object ref = resourceKey_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        resourceKey_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
+                return getScheduleFieldBuilder().getBuilder();
+            }
 
-    public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;
-    private volatile java.lang.Object resourceValue_;
-    /**
-     * <code>string resource_value = 2;</code>
-     * @return The resourceValue.
-     */
-    @java.lang.Override
-    public java.lang.String getResourceValue() {
-      java.lang.Object ref = resourceValue_;
-      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();
-        resourceValue_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string resource_value = 2;</code>
-     * @return The bytes for resourceValue.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getResourceValueBytes() {
-      java.lang.Object ref = resourceValue_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        resourceValue_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
+                if ((constraintCase_ == 3) && (scheduleBuilder_ != null)) {
+                    return scheduleBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 3) {
+                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Schedule.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;
+            /**
+             * <code>.context.Constraint_Schedule schedule = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> getScheduleFieldBuilder() {
+                if (scheduleBuilder_ == null) {
+                    if (!(constraintCase_ == 3)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
+                    }
+                    scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder>((context.ContextOuterClass.Constraint_Schedule) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 3;
+                onChanged();
+                return scheduleBuilder_;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> endpointLocationBuilder_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getResourceKeyBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
-      }
-      if (!getResourceValueBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             * @return Whether the endpointLocation field is set.
+             */
+            @java.lang.Override
+            public boolean hasEndpointLocation() {
+                return constraintCase_ == 4;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getResourceKeyBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
-      }
-      if (!getResourceValueBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             * @return The endpointLocation.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4) {
+                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 4) {
+                        return endpointLocationBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConfigRule_Custom)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConfigRule_Custom other = (context.ContextOuterClass.ConfigRule_Custom) obj;
-
-      if (!getResourceKey()
-          .equals(other.getResourceKey())) return false;
-      if (!getResourceValue()
-          .equals(other.getResourceValue())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    endpointLocationBuilder_.setMessage(value);
+                }
+                constraintCase_ = 4;
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + RESOURCE_KEY_FIELD_NUMBER;
-      hash = (53 * hash) + getResourceKey().hashCode();
-      hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
-      hash = (53 * hash) + getResourceValue().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
+                if (endpointLocationBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    endpointLocationBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 4;
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_Custom parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4 && constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 4) {
+                        endpointLocationBuilder_.mergeFrom(value);
+                    } else {
+                        endpointLocationBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 4;
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConfigRule_Custom prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            public Builder clearEndpointLocation() {
+                if (endpointLocationBuilder_ == null) {
+                    if (constraintCase_ == 4) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 4) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    endpointLocationBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConfigRule_Custom}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConfigRule_Custom)
-        context.ContextOuterClass.ConfigRule_CustomOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        resourceKey_ = "";
-
-        resourceValue_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_Custom build() {
-        context.ContextOuterClass.ConfigRule_Custom result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
-        context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
-        result.resourceKey_ = resourceKey_;
-        result.resourceValue_ = resourceValue_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConfigRule_Custom) {
-          return mergeFrom((context.ContextOuterClass.ConfigRule_Custom)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConfigRule_Custom other) {
-        if (other == context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) return this;
-        if (!other.getResourceKey().isEmpty()) {
-          resourceKey_ = other.resourceKey_;
-          onChanged();
-        }
-        if (!other.getResourceValue().isEmpty()) {
-          resourceValue_ = other.resourceValue_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConfigRule_Custom parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConfigRule_Custom) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object resourceKey_ = "";
-      /**
-       * <code>string resource_key = 1;</code>
-       * @return The resourceKey.
-       */
-      public java.lang.String getResourceKey() {
-        java.lang.Object ref = resourceKey_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          resourceKey_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string resource_key = 1;</code>
-       * @return The bytes for resourceKey.
-       */
-      public com.google.protobuf.ByteString
-          getResourceKeyBytes() {
-        java.lang.Object ref = resourceKey_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          resourceKey_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string resource_key = 1;</code>
-       * @param value The resourceKey to set.
-       * @return This builder for chaining.
-       */
-      public Builder setResourceKey(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        resourceKey_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string resource_key = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearResourceKey() {
-        
-        resourceKey_ = getDefaultInstance().getResourceKey();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string resource_key = 1;</code>
-       * @param value The bytes for resourceKey to set.
-       * @return This builder for chaining.
-       */
-      public Builder setResourceKeyBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        resourceKey_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object resourceValue_ = "";
-      /**
-       * <code>string resource_value = 2;</code>
-       * @return The resourceValue.
-       */
-      public java.lang.String getResourceValue() {
-        java.lang.Object ref = resourceValue_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          resourceValue_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string resource_value = 2;</code>
-       * @return The bytes for resourceValue.
-       */
-      public com.google.protobuf.ByteString
-          getResourceValueBytes() {
-        java.lang.Object ref = resourceValue_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          resourceValue_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string resource_value = 2;</code>
-       * @param value The resourceValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setResourceValue(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        resourceValue_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string resource_value = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearResourceValue() {
-        
-        resourceValue_ = getDefaultInstance().getResourceValue();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string resource_value = 2;</code>
-       * @param value The bytes for resourceValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setResourceValueBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        resourceValue_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConfigRule_Custom)
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
+                return getEndpointLocationFieldBuilder().getBuilder();
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConfigRule_Custom)
-    private static final context.ContextOuterClass.ConfigRule_Custom DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_Custom();
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
+                if ((constraintCase_ == 4) && (endpointLocationBuilder_ != null)) {
+                    return endpointLocationBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 4) {
+                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                }
+            }
 
-    public static context.ContextOuterClass.ConfigRule_Custom getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> getEndpointLocationFieldBuilder() {
+                if (endpointLocationBuilder_ == null) {
+                    if (!(constraintCase_ == 4)) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
+                    }
+                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder>((context.ContextOuterClass.Constraint_EndPointLocation) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 4;
+                onChanged();
+                return endpointLocationBuilder_;
+            }
 
-    private static final com.google.protobuf.Parser<ConfigRule_Custom>
-        PARSER = new com.google.protobuf.AbstractParser<ConfigRule_Custom>() {
-      @java.lang.Override
-      public ConfigRule_Custom parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConfigRule_Custom(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConfigRule_Custom> parser() {
-      return PARSER;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> endpointPriorityBuilder_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConfigRule_Custom> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             * @return Whether the endpointPriority field is set.
+             */
+            @java.lang.Override
+            public boolean hasEndpointPriority() {
+                return constraintCase_ == 5;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             * @return The endpointPriority.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5) {
+                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 5) {
+                        return endpointPriorityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                }
+            }
 
-  }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
+                if (endpointPriorityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    endpointPriorityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 5;
+                return this;
+            }
 
-  public interface ConfigRule_ACLOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConfigRule_ACL)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
+                if (endpointPriorityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    endpointPriorityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 5;
+                return this;
+            }
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5 && constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 5) {
+                        endpointPriorityBuilder_.mergeFrom(value);
+                    } else {
+                        endpointPriorityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 5;
+                return this;
+            }
 
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     * @return Whether the ruleSet field is set.
-     */
-    boolean hasRuleSet();
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     * @return The ruleSet.
-     */
-    acl.Acl.AclRuleSet getRuleSet();
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     */
-    acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.ConfigRule_ACL}
-   */
-  public static final class ConfigRule_ACL extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConfigRule_ACL)
-      ConfigRule_ACLOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConfigRule_ACL.newBuilder() to construct.
-    private ConfigRule_ACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConfigRule_ACL() {
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            public Builder clearEndpointPriority() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (constraintCase_ == 5) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 5) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    endpointPriorityBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConfigRule_ACL();
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
+                return getEndpointPriorityFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConfigRule_ACL(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              acl.Acl.AclRuleSet.Builder subBuilder = null;
-              if (ruleSet_ != null) {
-                subBuilder = ruleSet_.toBuilder();
-              }
-              ruleSet_ = input.readMessage(acl.Acl.AclRuleSet.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(ruleSet_);
-                ruleSet_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
+                if ((constraintCase_ == 5) && (endpointPriorityBuilder_ != null)) {
+                    return endpointPriorityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 5) {
+                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
-    }
+            /**
+             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> getEndpointPriorityFieldBuilder() {
+                if (endpointPriorityBuilder_ == null) {
+                    if (!(constraintCase_ == 5)) {
+                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
+                    }
+                    endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder>((context.ContextOuterClass.Constraint_EndPointPriority) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 5;
+                onChanged();
+                return endpointPriorityBuilder_;
+            }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> slaCapacityBuilder_;
 
-    public static final int RULE_SET_FIELD_NUMBER = 2;
-    private acl.Acl.AclRuleSet ruleSet_;
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     * @return Whether the ruleSet field is set.
-     */
-    @java.lang.Override
-    public boolean hasRuleSet() {
-      return ruleSet_ != null;
-    }
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     * @return The ruleSet.
-     */
-    @java.lang.Override
-    public acl.Acl.AclRuleSet getRuleSet() {
-      return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
-    }
-    /**
-     * <code>.acl.AclRuleSet rule_set = 2;</code>
-     */
-    @java.lang.Override
-    public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-      return getRuleSet();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             * @return Whether the slaCapacity field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaCapacity() {
+                return constraintCase_ == 6;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             * @return The slaCapacity.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6) {
+                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 6) {
+                        return slaCapacityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
+                if (slaCapacityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaCapacityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 6;
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (ruleSet_ != null) {
-        output.writeMessage(2, getRuleSet());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
+                if (slaCapacityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaCapacityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 6;
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (ruleSet_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getRuleSet());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6 && constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 6) {
+                        slaCapacityBuilder_.mergeFrom(value);
+                    } else {
+                        slaCapacityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 6;
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConfigRule_ACL)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConfigRule_ACL other = (context.ContextOuterClass.ConfigRule_ACL) obj;
-
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (hasRuleSet() != other.hasRuleSet()) return false;
-      if (hasRuleSet()) {
-        if (!getRuleSet()
-            .equals(other.getRuleSet())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            public Builder clearSlaCapacity() {
+                if (slaCapacityBuilder_ == null) {
+                    if (constraintCase_ == 6) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 6) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaCapacityBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      if (hasRuleSet()) {
-        hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
-        hash = (53 * hash) + getRuleSet().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
+                return getSlaCapacityFieldBuilder().getBuilder();
+            }
 
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule_ACL parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
+                if ((constraintCase_ == 6) && (slaCapacityBuilder_ != null)) {
+                    return slaCapacityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 6) {
+                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConfigRule_ACL prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> getSlaCapacityFieldBuilder() {
+                if (slaCapacityBuilder_ == null) {
+                    if (!(constraintCase_ == 6)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
+                    }
+                    slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder>((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 6;
+                onChanged();
+                return slaCapacityBuilder_;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConfigRule_ACL}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConfigRule_ACL)
-        context.ContextOuterClass.ConfigRule_ACLOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        if (ruleSetBuilder_ == null) {
-          ruleSet_ = null;
-        } else {
-          ruleSet_ = null;
-          ruleSetBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_ACL build() {
-        context.ContextOuterClass.ConfigRule_ACL result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
-        context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        if (ruleSetBuilder_ == null) {
-          result.ruleSet_ = ruleSet_;
-        } else {
-          result.ruleSet_ = ruleSetBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConfigRule_ACL) {
-          return mergeFrom((context.ContextOuterClass.ConfigRule_ACL)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConfigRule_ACL other) {
-        if (other == context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) return this;
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (other.hasRuleSet()) {
-          mergeRuleSet(other.getRuleSet());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConfigRule_ACL parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConfigRule_ACL) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private acl.Acl.AclRuleSet ruleSet_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> ruleSetBuilder_;
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       * @return Whether the ruleSet field is set.
-       */
-      public boolean hasRuleSet() {
-        return ruleSetBuilder_ != null || ruleSet_ != null;
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       * @return The ruleSet.
-       */
-      public acl.Acl.AclRuleSet getRuleSet() {
-        if (ruleSetBuilder_ == null) {
-          return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
-        } else {
-          return ruleSetBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public Builder setRuleSet(acl.Acl.AclRuleSet value) {
-        if (ruleSetBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ruleSet_ = value;
-          onChanged();
-        } else {
-          ruleSetBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public Builder setRuleSet(
-          acl.Acl.AclRuleSet.Builder builderForValue) {
-        if (ruleSetBuilder_ == null) {
-          ruleSet_ = builderForValue.build();
-          onChanged();
-        } else {
-          ruleSetBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
-        if (ruleSetBuilder_ == null) {
-          if (ruleSet_ != null) {
-            ruleSet_ =
-              acl.Acl.AclRuleSet.newBuilder(ruleSet_).mergeFrom(value).buildPartial();
-          } else {
-            ruleSet_ = value;
-          }
-          onChanged();
-        } else {
-          ruleSetBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public Builder clearRuleSet() {
-        if (ruleSetBuilder_ == null) {
-          ruleSet_ = null;
-          onChanged();
-        } else {
-          ruleSet_ = null;
-          ruleSetBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
-        
-        onChanged();
-        return getRuleSetFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
-        if (ruleSetBuilder_ != null) {
-          return ruleSetBuilder_.getMessageOrBuilder();
-        } else {
-          return ruleSet_ == null ?
-              acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
-        }
-      }
-      /**
-       * <code>.acl.AclRuleSet rule_set = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> 
-          getRuleSetFieldBuilder() {
-        if (ruleSetBuilder_ == null) {
-          ruleSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder>(
-                  getRuleSet(),
-                  getParentForChildren(),
-                  isClean());
-          ruleSet_ = null;
-        }
-        return ruleSetBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConfigRule_ACL)
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> slaLatencyBuilder_;
 
-    // @@protoc_insertion_point(class_scope:context.ConfigRule_ACL)
-    private static final context.ContextOuterClass.ConfigRule_ACL DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_ACL();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             * @return Whether the slaLatency field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaLatency() {
+                return constraintCase_ == 7;
+            }
 
-    public static context.ContextOuterClass.ConfigRule_ACL getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             * @return The slaLatency.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7) {
+                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 7) {
+                        return slaLatencyBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+                }
+            }
 
-    private static final com.google.protobuf.Parser<ConfigRule_ACL>
-        PARSER = new com.google.protobuf.AbstractParser<ConfigRule_ACL>() {
-      @java.lang.Override
-      public ConfigRule_ACL parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConfigRule_ACL(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConfigRule_ACL> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
+                if (slaLatencyBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaLatencyBuilder_.setMessage(value);
+                }
+                constraintCase_ = 7;
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConfigRule_ACL> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) {
+                if (slaLatencyBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaLatencyBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 7;
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7 && constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 7) {
+                        slaLatencyBuilder_.mergeFrom(value);
+                    } else {
+                        slaLatencyBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 7;
+                return this;
+            }
 
-  }
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            public Builder clearSlaLatency() {
+                if (slaLatencyBuilder_ == null) {
+                    if (constraintCase_ == 7) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 7) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaLatencyBuilder_.clear();
+                }
+                return this;
+            }
 
-  public interface ConfigRuleOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.ConfigRule)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() {
+                return getSlaLatencyFieldBuilder().getBuilder();
+            }
 
-    /**
-     * <code>.context.ConfigActionEnum action = 1;</code>
-     * @return The enum numeric value on the wire for action.
-     */
-    int getActionValue();
-    /**
-     * <code>.context.ConfigActionEnum action = 1;</code>
-     * @return The action.
-     */
-    context.ContextOuterClass.ConfigActionEnum getAction();
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
+                if ((constraintCase_ == 7) && (slaLatencyBuilder_ != null)) {
+                    return slaLatencyBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 7) {
+                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+                }
+            }
 
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     * @return Whether the custom field is set.
-     */
-    boolean hasCustom();
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     * @return The custom.
-     */
-    context.ContextOuterClass.ConfigRule_Custom getCustom();
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     */
-    context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder();
+            /**
+             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> getSlaLatencyFieldBuilder() {
+                if (slaLatencyBuilder_ == null) {
+                    if (!(constraintCase_ == 7)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
+                    }
+                    slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder>((context.ContextOuterClass.Constraint_SLA_Latency) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 7;
+                onChanged();
+                return slaLatencyBuilder_;
+            }
 
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     * @return Whether the acl field is set.
-     */
-    boolean hasAcl();
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     * @return The acl.
-     */
-    context.ContextOuterClass.ConfigRule_ACL getAcl();
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     */
-    context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();
-
-    public context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
-  }
-  /**
-   * Protobuf type {@code context.ConfigRule}
-   */
-  public static final class ConfigRule extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.ConfigRule)
-      ConfigRuleOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use ConfigRule.newBuilder() to construct.
-    private ConfigRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private ConfigRule() {
-      action_ = 0;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> slaAvailabilityBuilder_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new ConfigRule();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             * @return Whether the slaAvailability field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaAvailability() {
+                return constraintCase_ == 8;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private ConfigRule(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              action_ = rawValue;
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.ConfigRule_Custom.Builder subBuilder = null;
-              if (configRuleCase_ == 2) {
-                subBuilder = ((context.ContextOuterClass.ConfigRule_Custom) configRule_).toBuilder();
-              }
-              configRule_ =
-                  input.readMessage(context.ContextOuterClass.ConfigRule_Custom.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_Custom) configRule_);
-                configRule_ = subBuilder.buildPartial();
-              }
-              configRuleCase_ = 2;
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.ConfigRule_ACL.Builder subBuilder = null;
-              if (configRuleCase_ == 3) {
-                subBuilder = ((context.ContextOuterClass.ConfigRule_ACL) configRule_).toBuilder();
-              }
-              configRule_ =
-                  input.readMessage(context.ContextOuterClass.ConfigRule_ACL.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.ConfigRule_ACL) configRule_);
-                configRule_ = subBuilder.buildPartial();
-              }
-              configRuleCase_ = 3;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             * @return The slaAvailability.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8) {
+                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 8) {
+                        return slaAvailabilityBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaAvailabilityBuilder_.setMessage(value);
+                }
+                constraintCase_ = 8;
+                return this;
+            }
 
-    private int configRuleCase_ = 0;
-    private java.lang.Object configRule_;
-    public enum ConfigRuleCase
-        implements com.google.protobuf.Internal.EnumLite,
-            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
-      CUSTOM(2),
-      ACL(3),
-      CONFIGRULE_NOT_SET(0);
-      private final int value;
-      private ConfigRuleCase(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 ConfigRuleCase valueOf(int value) {
-        return forNumber(value);
-      }
-
-      public static ConfigRuleCase forNumber(int value) {
-        switch (value) {
-          case 2: return CUSTOM;
-          case 3: return ACL;
-          case 0: return CONFIGRULE_NOT_SET;
-          default: return null;
-        }
-      }
-      public int getNumber() {
-        return this.value;
-      }
-    };
-
-    public ConfigRuleCase
-    getConfigRuleCase() {
-      return ConfigRuleCase.forNumber(
-          configRuleCase_);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) {
+                if (slaAvailabilityBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaAvailabilityBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 8;
+                return this;
+            }
 
-    public static final int ACTION_FIELD_NUMBER = 1;
-    private int action_;
-    /**
-     * <code>.context.ConfigActionEnum action = 1;</code>
-     * @return The enum numeric value on the wire for action.
-     */
-    @java.lang.Override public int getActionValue() {
-      return action_;
-    }
-    /**
-     * <code>.context.ConfigActionEnum action = 1;</code>
-     * @return The action.
-     */
-    @java.lang.Override public context.ContextOuterClass.ConfigActionEnum getAction() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
-      return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8 && constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 8) {
+                        slaAvailabilityBuilder_.mergeFrom(value);
+                    } else {
+                        slaAvailabilityBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 8;
+                return this;
+            }
 
-    public static final int CUSTOM_FIELD_NUMBER = 2;
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     * @return Whether the custom field is set.
-     */
-    @java.lang.Override
-    public boolean hasCustom() {
-      return configRuleCase_ == 2;
-    }
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     * @return The custom.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_Custom getCustom() {
-      if (configRuleCase_ == 2) {
-         return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
-      }
-      return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-    }
-    /**
-     * <code>.context.ConfigRule_Custom custom = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
-      if (configRuleCase_ == 2) {
-         return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
-      }
-      return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            public Builder clearSlaAvailability() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (constraintCase_ == 8) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 8) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaAvailabilityBuilder_.clear();
+                }
+                return this;
+            }
 
-    public static final int ACL_FIELD_NUMBER = 3;
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     * @return Whether the acl field is set.
-     */
-    @java.lang.Override
-    public boolean hasAcl() {
-      return configRuleCase_ == 3;
-    }
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     * @return The acl.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_ACL getAcl() {
-      if (configRuleCase_ == 3) {
-         return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
-      }
-      return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-    }
-    /**
-     * <code>.context.ConfigRule_ACL acl = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
-      if (configRuleCase_ == 3) {
-         return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
-      }
-      return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() {
+                return getSlaAvailabilityFieldBuilder().getBuilder();
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
+                if ((constraintCase_ == 8) && (slaAvailabilityBuilder_ != null)) {
+                    return slaAvailabilityBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 8) {
+                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> getSlaAvailabilityFieldBuilder() {
+                if (slaAvailabilityBuilder_ == null) {
+                    if (!(constraintCase_ == 8)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
+                    }
+                    slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder>((context.ContextOuterClass.Constraint_SLA_Availability) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 8;
+                onChanged();
+                return slaAvailabilityBuilder_;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
-        output.writeEnum(1, action_);
-      }
-      if (configRuleCase_ == 2) {
-        output.writeMessage(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
-      }
-      if (configRuleCase_ == 3) {
-        output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
-      }
-      unknownFields.writeTo(output);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> slaIsolationBuilder_;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, action_);
-      }
-      if (configRuleCase_ == 2) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
-      }
-      if (configRuleCase_ == 3) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             * @return Whether the slaIsolation field is set.
+             */
+            @java.lang.Override
+            public boolean hasSlaIsolation() {
+                return constraintCase_ == 9;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.ConfigRule)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.ConfigRule other = (context.ContextOuterClass.ConfigRule) obj;
-
-      if (action_ != other.action_) return false;
-      if (!getConfigRuleCase().equals(other.getConfigRuleCase())) return false;
-      switch (configRuleCase_) {
-        case 2:
-          if (!getCustom()
-              .equals(other.getCustom())) return false;
-          break;
-        case 3:
-          if (!getAcl()
-              .equals(other.getAcl())) return false;
-          break;
-        case 0:
-        default:
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             * @return The slaIsolation.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9) {
+                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 9) {
+                        return slaIsolationBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                }
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + ACTION_FIELD_NUMBER;
-      hash = (53 * hash) + action_;
-      switch (configRuleCase_) {
-        case 2:
-          hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
-          hash = (53 * hash) + getCustom().hashCode();
-          break;
-        case 3:
-          hash = (37 * hash) + ACL_FIELD_NUMBER;
-          hash = (53 * hash) + getAcl().hashCode();
-          break;
-        case 0:
-        default:
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
+                if (slaIsolationBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    slaIsolationBuilder_.setMessage(value);
+                }
+                constraintCase_ = 9;
+                return this;
+            }
 
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.ConfigRule parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) {
+                if (slaIsolationBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    slaIsolationBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 9;
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.ConfigRule prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9 && constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 9) {
+                        slaIsolationBuilder_.mergeFrom(value);
+                    } else {
+                        slaIsolationBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 9;
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.ConfigRule}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.ConfigRule)
-        context.ContextOuterClass.ConfigRuleOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        action_ = 0;
-
-        configRuleCase_ = 0;
-        configRule_ = null;
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
-        return context.ContextOuterClass.ConfigRule.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule build() {
-        context.ContextOuterClass.ConfigRule result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule buildPartial() {
-        context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
-        result.action_ = action_;
-        if (configRuleCase_ == 2) {
-          if (customBuilder_ == null) {
-            result.configRule_ = configRule_;
-          } else {
-            result.configRule_ = customBuilder_.build();
-          }
-        }
-        if (configRuleCase_ == 3) {
-          if (aclBuilder_ == null) {
-            result.configRule_ = configRule_;
-          } else {
-            result.configRule_ = aclBuilder_.build();
-          }
-        }
-        result.configRuleCase_ = configRuleCase_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.ConfigRule) {
-          return mergeFrom((context.ContextOuterClass.ConfigRule)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.ConfigRule other) {
-        if (other == context.ContextOuterClass.ConfigRule.getDefaultInstance()) return this;
-        if (other.action_ != 0) {
-          setActionValue(other.getActionValue());
-        }
-        switch (other.getConfigRuleCase()) {
-          case CUSTOM: {
-            mergeCustom(other.getCustom());
-            break;
-          }
-          case ACL: {
-            mergeAcl(other.getAcl());
-            break;
-          }
-          case CONFIGRULE_NOT_SET: {
-            break;
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.ConfigRule parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.ConfigRule) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int configRuleCase_ = 0;
-      private java.lang.Object configRule_;
-      public ConfigRuleCase
-          getConfigRuleCase() {
-        return ConfigRuleCase.forNumber(
-            configRuleCase_);
-      }
-
-      public Builder clearConfigRule() {
-        configRuleCase_ = 0;
-        configRule_ = null;
-        onChanged();
-        return this;
-      }
-
-
-      private int action_ = 0;
-      /**
-       * <code>.context.ConfigActionEnum action = 1;</code>
-       * @return The enum numeric value on the wire for action.
-       */
-      @java.lang.Override public int getActionValue() {
-        return action_;
-      }
-      /**
-       * <code>.context.ConfigActionEnum action = 1;</code>
-       * @param value The enum numeric value on the wire for action to set.
-       * @return This builder for chaining.
-       */
-      public Builder setActionValue(int value) {
-        
-        action_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ConfigActionEnum action = 1;</code>
-       * @return The action.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigActionEnum getAction() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.valueOf(action_);
-        return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.ConfigActionEnum action = 1;</code>
-       * @param value The action to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAction(context.ContextOuterClass.ConfigActionEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        action_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ConfigActionEnum action = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAction() {
-        
-        action_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> customBuilder_;
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       * @return Whether the custom field is set.
-       */
-      @java.lang.Override
-      public boolean hasCustom() {
-        return configRuleCase_ == 2;
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       * @return The custom.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_Custom getCustom() {
-        if (customBuilder_ == null) {
-          if (configRuleCase_ == 2) {
-            return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
-          }
-          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-        } else {
-          if (configRuleCase_ == 2) {
-            return customBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom value) {
-        if (customBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          configRule_ = value;
-          onChanged();
-        } else {
-          customBuilder_.setMessage(value);
-        }
-        configRuleCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      public Builder setCustom(
-          context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) {
-        if (customBuilder_ == null) {
-          configRule_ = builderForValue.build();
-          onChanged();
-        } else {
-          customBuilder_.setMessage(builderForValue.build());
-        }
-        configRuleCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      public Builder mergeCustom(context.ContextOuterClass.ConfigRule_Custom value) {
-        if (customBuilder_ == null) {
-          if (configRuleCase_ == 2 &&
-              configRule_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) {
-            configRule_ = context.ContextOuterClass.ConfigRule_Custom.newBuilder((context.ContextOuterClass.ConfigRule_Custom) configRule_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            configRule_ = value;
-          }
-          onChanged();
-        } else {
-          if (configRuleCase_ == 2) {
-            customBuilder_.mergeFrom(value);
-          }
-          customBuilder_.setMessage(value);
-        }
-        configRuleCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      public Builder clearCustom() {
-        if (customBuilder_ == null) {
-          if (configRuleCase_ == 2) {
-            configRuleCase_ = 0;
-            configRule_ = null;
-            onChanged();
-          }
-        } else {
-          if (configRuleCase_ == 2) {
-            configRuleCase_ = 0;
-            configRule_ = null;
-          }
-          customBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      public context.ContextOuterClass.ConfigRule_Custom.Builder getCustomBuilder() {
-        return getCustomFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
-        if ((configRuleCase_ == 2) && (customBuilder_ != null)) {
-          return customBuilder_.getMessageOrBuilder();
-        } else {
-          if (configRuleCase_ == 2) {
-            return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
-          }
-          return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.ConfigRule_Custom custom = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> 
-          getCustomFieldBuilder() {
-        if (customBuilder_ == null) {
-          if (!(configRuleCase_ == 2)) {
-            configRule_ = context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
-          }
-          customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder>(
-                  (context.ContextOuterClass.ConfigRule_Custom) configRule_,
-                  getParentForChildren(),
-                  isClean());
-          configRule_ = null;
-        }
-        configRuleCase_ = 2;
-        onChanged();;
-        return customBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> aclBuilder_;
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       * @return Whether the acl field is set.
-       */
-      @java.lang.Override
-      public boolean hasAcl() {
-        return configRuleCase_ == 3;
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       * @return The acl.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_ACL getAcl() {
-        if (aclBuilder_ == null) {
-          if (configRuleCase_ == 3) {
-            return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
-          }
-          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-        } else {
-          if (configRuleCase_ == 3) {
-            return aclBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL value) {
-        if (aclBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          configRule_ = value;
-          onChanged();
-        } else {
-          aclBuilder_.setMessage(value);
-        }
-        configRuleCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      public Builder setAcl(
-          context.ContextOuterClass.ConfigRule_ACL.Builder builderForValue) {
-        if (aclBuilder_ == null) {
-          configRule_ = builderForValue.build();
-          onChanged();
-        } else {
-          aclBuilder_.setMessage(builderForValue.build());
-        }
-        configRuleCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      public Builder mergeAcl(context.ContextOuterClass.ConfigRule_ACL value) {
-        if (aclBuilder_ == null) {
-          if (configRuleCase_ == 3 &&
-              configRule_ != context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) {
-            configRule_ = context.ContextOuterClass.ConfigRule_ACL.newBuilder((context.ContextOuterClass.ConfigRule_ACL) configRule_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            configRule_ = value;
-          }
-          onChanged();
-        } else {
-          if (configRuleCase_ == 3) {
-            aclBuilder_.mergeFrom(value);
-          }
-          aclBuilder_.setMessage(value);
-        }
-        configRuleCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      public Builder clearAcl() {
-        if (aclBuilder_ == null) {
-          if (configRuleCase_ == 3) {
-            configRuleCase_ = 0;
-            configRule_ = null;
-            onChanged();
-          }
-        } else {
-          if (configRuleCase_ == 3) {
-            configRuleCase_ = 0;
-            configRule_ = null;
-          }
-          aclBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      public context.ContextOuterClass.ConfigRule_ACL.Builder getAclBuilder() {
-        return getAclFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
-        if ((configRuleCase_ == 3) && (aclBuilder_ != null)) {
-          return aclBuilder_.getMessageOrBuilder();
-        } else {
-          if (configRuleCase_ == 3) {
-            return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
-          }
-          return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.ConfigRule_ACL acl = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> 
-          getAclFieldBuilder() {
-        if (aclBuilder_ == null) {
-          if (!(configRuleCase_ == 3)) {
-            configRule_ = context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
-          }
-          aclBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder>(
-                  (context.ContextOuterClass.ConfigRule_ACL) configRule_,
-                  getParentForChildren(),
-                  isClean());
-          configRule_ = null;
-        }
-        configRuleCase_ = 3;
-        onChanged();;
-        return aclBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.ConfigRule)
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            public Builder clearSlaIsolation() {
+                if (slaIsolationBuilder_ == null) {
+                    if (constraintCase_ == 9) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 9) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    slaIsolationBuilder_.clear();
+                }
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.ConfigRule)
-    private static final context.ContextOuterClass.ConfigRule DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule();
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() {
+                return getSlaIsolationFieldBuilder().getBuilder();
+            }
 
-    public static context.ContextOuterClass.ConfigRule getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
+                if ((constraintCase_ == 9) && (slaIsolationBuilder_ != null)) {
+                    return slaIsolationBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 9) {
+                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                }
+            }
 
-    private static final com.google.protobuf.Parser<ConfigRule>
-        PARSER = new com.google.protobuf.AbstractParser<ConfigRule>() {
-      @java.lang.Override
-      public ConfigRule parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ConfigRule(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<ConfigRule> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> getSlaIsolationFieldBuilder() {
+                if (slaIsolationBuilder_ == null) {
+                    if (!(constraintCase_ == 9)) {
+                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
+                    }
+                    slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder>((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 9;
+                onChanged();
+                return slaIsolationBuilder_;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<ConfigRule> getParserForType() {
-      return PARSER;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> exclusionsBuilder_;
 
-    @java.lang.Override
-    public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             * @return Whether the exclusions field is set.
+             */
+            @java.lang.Override
+            public boolean hasExclusions() {
+                return constraintCase_ == 10;
+            }
 
-  }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             * @return The exclusions.
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10) {
+                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+                } else {
+                    if (constraintCase_ == 10) {
+                        return exclusionsBuilder_.getMessage();
+                    }
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+                }
+            }
 
-  public interface Constraint_CustomOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_Custom)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
+                if (exclusionsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    constraint_ = value;
+                    onChanged();
+                } else {
+                    exclusionsBuilder_.setMessage(value);
+                }
+                constraintCase_ = 10;
+                return this;
+            }
 
-    /**
-     * <code>string constraint_type = 1;</code>
-     * @return The constraintType.
-     */
-    java.lang.String getConstraintType();
-    /**
-     * <code>string constraint_type = 1;</code>
-     * @return The bytes for constraintType.
-     */
-    com.google.protobuf.ByteString
-        getConstraintTypeBytes();
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) {
+                if (exclusionsBuilder_ == null) {
+                    constraint_ = builderForValue.build();
+                    onChanged();
+                } else {
+                    exclusionsBuilder_.setMessage(builderForValue.build());
+                }
+                constraintCase_ = 10;
+                return this;
+            }
 
-    /**
-     * <code>string constraint_value = 2;</code>
-     * @return The constraintValue.
-     */
-    java.lang.String getConstraintValue();
-    /**
-     * <code>string constraint_value = 2;</code>
-     * @return The bytes for constraintValue.
-     */
-    com.google.protobuf.ByteString
-        getConstraintValueBytes();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_Custom}
-   */
-  public static final class Constraint_Custom extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_Custom)
-      Constraint_CustomOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_Custom.newBuilder() to construct.
-    private Constraint_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_Custom() {
-      constraintType_ = "";
-      constraintValue_ = "";
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10 && constraint_ != context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) {
+                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.newBuilder((context.ContextOuterClass.Constraint_Exclusions) constraint_).mergeFrom(value).buildPartial();
+                    } else {
+                        constraint_ = value;
+                    }
+                    onChanged();
+                } else {
+                    if (constraintCase_ == 10) {
+                        exclusionsBuilder_.mergeFrom(value);
+                    } else {
+                        exclusionsBuilder_.setMessage(value);
+                    }
+                }
+                constraintCase_ = 10;
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_Custom();
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            public Builder clearExclusions() {
+                if (exclusionsBuilder_ == null) {
+                    if (constraintCase_ == 10) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                        onChanged();
+                    }
+                } else {
+                    if (constraintCase_ == 10) {
+                        constraintCase_ = 0;
+                        constraint_ = null;
+                    }
+                    exclusionsBuilder_.clear();
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_Custom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              constraintType_ = s;
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              constraintValue_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() {
+                return getExclusionsFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            @java.lang.Override
+            public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
+                if ((constraintCase_ == 10) && (exclusionsBuilder_ != null)) {
+                    return exclusionsBuilder_.getMessageOrBuilder();
+                } else {
+                    if (constraintCase_ == 10) {
+                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
+                    }
+                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+                }
+            }
 
-    public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;
-    private volatile java.lang.Object constraintType_;
-    /**
-     * <code>string constraint_type = 1;</code>
-     * @return The constraintType.
-     */
-    @java.lang.Override
-    public java.lang.String getConstraintType() {
-      java.lang.Object ref = constraintType_;
-      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();
-        constraintType_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string constraint_type = 1;</code>
-     * @return The bytes for constraintType.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getConstraintTypeBytes() {
-      java.lang.Object ref = constraintType_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        constraintType_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            /**
+             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> getExclusionsFieldBuilder() {
+                if (exclusionsBuilder_ == null) {
+                    if (!(constraintCase_ == 10)) {
+                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
+                    }
+                    exclusionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder>((context.ContextOuterClass.Constraint_Exclusions) constraint_, getParentForChildren(), isClean());
+                    constraint_ = null;
+                }
+                constraintCase_ = 10;
+                onChanged();
+                return exclusionsBuilder_;
+            }
 
-    public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;
-    private volatile java.lang.Object constraintValue_;
-    /**
-     * <code>string constraint_value = 2;</code>
-     * @return The constraintValue.
-     */
-    @java.lang.Override
-    public java.lang.String getConstraintValue() {
-      java.lang.Object ref = constraintValue_;
-      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();
-        constraintValue_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string constraint_value = 2;</code>
-     * @return The bytes for constraintValue.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getConstraintValueBytes() {
-      java.lang.Object ref = constraintValue_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        constraintValue_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.Constraint)
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // @@protoc_insertion_point(class_scope:context.Constraint)
+        private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (!getConstraintTypeBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
-      }
-      if (!getConstraintValueBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
-      }
-      unknownFields.writeTo(output);
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint();
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (!getConstraintTypeBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
-      }
-      if (!getConstraintValueBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.Constraint getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_Custom)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_Custom other = (context.ContextOuterClass.Constraint_Custom) obj;
-
-      if (!getConstraintType()
-          .equals(other.getConstraintType())) return false;
-      if (!getConstraintValue()
-          .equals(other.getConstraintValue())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        private static final com.google.protobuf.Parser<Constraint> PARSER = new com.google.protobuf.AbstractParser<Constraint>() {
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + CONSTRAINT_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + getConstraintType().hashCode();
-      hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
-      hash = (53 * hash) + getConstraintValue().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public Constraint 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 context.ContextOuterClass.Constraint_Custom parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Custom parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static com.google.protobuf.Parser<Constraint> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_Custom 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
+        public com.google.protobuf.Parser<Constraint> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_Custom}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_Custom)
-        context.ContextOuterClass.Constraint_CustomOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        constraintType_ = "";
-
-        constraintValue_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Custom build() {
-        context.ContextOuterClass.Constraint_Custom result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Custom buildPartial() {
-        context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
-        result.constraintType_ = constraintType_;
-        result.constraintValue_ = constraintValue_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_Custom) {
-          return mergeFrom((context.ContextOuterClass.Constraint_Custom)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_Custom other) {
-        if (other == context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) return this;
-        if (!other.getConstraintType().isEmpty()) {
-          constraintType_ = other.constraintType_;
-          onChanged();
-        }
-        if (!other.getConstraintValue().isEmpty()) {
-          constraintValue_ = other.constraintValue_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_Custom parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_Custom) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private java.lang.Object constraintType_ = "";
-      /**
-       * <code>string constraint_type = 1;</code>
-       * @return The constraintType.
-       */
-      public java.lang.String getConstraintType() {
-        java.lang.Object ref = constraintType_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          constraintType_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string constraint_type = 1;</code>
-       * @return The bytes for constraintType.
-       */
-      public com.google.protobuf.ByteString
-          getConstraintTypeBytes() {
-        java.lang.Object ref = constraintType_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          constraintType_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string constraint_type = 1;</code>
-       * @param value The constraintType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setConstraintType(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        constraintType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string constraint_type = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearConstraintType() {
-        
-        constraintType_ = getDefaultInstance().getConstraintType();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string constraint_type = 1;</code>
-       * @param value The bytes for constraintType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setConstraintTypeBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        constraintType_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object constraintValue_ = "";
-      /**
-       * <code>string constraint_value = 2;</code>
-       * @return The constraintValue.
-       */
-      public java.lang.String getConstraintValue() {
-        java.lang.Object ref = constraintValue_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          constraintValue_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string constraint_value = 2;</code>
-       * @return The bytes for constraintValue.
-       */
-      public com.google.protobuf.ByteString
-          getConstraintValueBytes() {
-        java.lang.Object ref = constraintValue_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          constraintValue_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string constraint_value = 2;</code>
-       * @param value The constraintValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setConstraintValue(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        constraintValue_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string constraint_value = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearConstraintValue() {
-        
-        constraintValue_ = getDefaultInstance().getConstraintValue();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string constraint_value = 2;</code>
-       * @param value The bytes for constraintValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setConstraintValueBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        constraintValue_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_Custom)
+        @java.lang.Override
+        public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_Custom)
-    private static final context.ContextOuterClass.Constraint_Custom DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Custom();
-    }
+    public interface TeraFlowControllerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TeraFlowController)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static context.ContextOuterClass.Constraint_Custom getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
 
-    private static final com.google.protobuf.Parser<Constraint_Custom>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_Custom>() {
-      @java.lang.Override
-      public Constraint_Custom parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_Custom(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_Custom> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_Custom> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>string ip_address = 2;</code>
+         * @return The ipAddress.
+         */
+        java.lang.String getIpAddress();
 
-  }
+        /**
+         * <code>string ip_address = 2;</code>
+         * @return The bytes for ipAddress.
+         */
+        com.google.protobuf.ByteString getIpAddressBytes();
 
-  public interface Constraint_ScheduleOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_Schedule)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>uint32 port = 3;</code>
+         * @return The port.
+         */
+        int getPort();
+    }
 
     /**
-     * <code>float start_timestamp = 1;</code>
-     * @return The startTimestamp.
+     * <pre>
+     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
+     * </pre>
+     *
+     * Protobuf type {@code context.TeraFlowController}
      */
-    float getStartTimestamp();
+    public static final class TeraFlowController extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TeraFlowController)
+    TeraFlowControllerOrBuilder {
 
-    /**
-     * <code>float duration_days = 2;</code>
-     * @return The durationDays.
-     */
-    float getDurationDays();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_Schedule}
-   */
-  public static final class Constraint_Schedule extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_Schedule)
-      Constraint_ScheduleOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_Schedule.newBuilder() to construct.
-    private Constraint_Schedule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_Schedule() {
-    }
+        private static final long serialVersionUID = 0L;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_Schedule();
-    }
+        // Use TeraFlowController.newBuilder() to construct.
+        private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_Schedule(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              startTimestamp_ = input.readFloat();
-              break;
-            }
-            case 21: {
-
-              durationDays_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
-    }
+        private TeraFlowController() {
+            ipAddress_ = "";
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new TeraFlowController();
+        }
 
-    public static final int START_TIMESTAMP_FIELD_NUMBER = 1;
-    private float startTimestamp_;
-    /**
-     * <code>float start_timestamp = 1;</code>
-     * @return The startTimestamp.
-     */
-    @java.lang.Override
-    public float getStartTimestamp() {
-      return startTimestamp_;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
+        }
 
-    public static final int DURATION_DAYS_FIELD_NUMBER = 2;
-    private float durationDays_;
-    /**
-     * <code>float duration_days = 2;</code>
-     * @return The durationDays.
-     */
-    @java.lang.Override
-    public float getDurationDays() {
-      return durationDays_;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.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;
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        private context.ContextOuterClass.ContextId contextId_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (startTimestamp_ != 0F) {
-        output.writeFloat(1, startTimestamp_);
-      }
-      if (durationDays_ != 0F) {
-        output.writeFloat(2, durationDays_);
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (startTimestamp_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, startTimestamp_);
-      }
-      if (durationDays_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, durationDays_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_Schedule)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj;
-
-      if (java.lang.Float.floatToIntBits(getStartTimestamp())
-          != java.lang.Float.floatToIntBits(
-              other.getStartTimestamp())) return false;
-      if (java.lang.Float.floatToIntBits(getDurationDays())
-          != java.lang.Float.floatToIntBits(
-              other.getDurationDays())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getStartTimestamp());
-      hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getDurationDays());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final int IP_ADDRESS_FIELD_NUMBER = 2;
 
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Schedule parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object ipAddress_ = "";
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_Schedule prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>string ip_address = 2;</code>
+         * @return The ipAddress.
+         */
+        @java.lang.Override
+        public java.lang.String getIpAddress() {
+            java.lang.Object ref = ipAddress_;
+            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();
+                ipAddress_ = s;
+                return s;
+            }
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_Schedule}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_Schedule)
-        context.ContextOuterClass.Constraint_ScheduleOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        startTimestamp_ = 0F;
-
-        durationDays_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Schedule build() {
-        context.ContextOuterClass.Constraint_Schedule result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Schedule buildPartial() {
-        context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
-        result.startTimestamp_ = startTimestamp_;
-        result.durationDays_ = durationDays_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_Schedule) {
-          return mergeFrom((context.ContextOuterClass.Constraint_Schedule)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) {
-        if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) return this;
-        if (other.getStartTimestamp() != 0F) {
-          setStartTimestamp(other.getStartTimestamp());
-        }
-        if (other.getDurationDays() != 0F) {
-          setDurationDays(other.getDurationDays());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_Schedule parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_Schedule) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private float startTimestamp_ ;
-      /**
-       * <code>float start_timestamp = 1;</code>
-       * @return The startTimestamp.
-       */
-      @java.lang.Override
-      public float getStartTimestamp() {
-        return startTimestamp_;
-      }
-      /**
-       * <code>float start_timestamp = 1;</code>
-       * @param value The startTimestamp to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStartTimestamp(float value) {
-        
-        startTimestamp_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float start_timestamp = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearStartTimestamp() {
-        
-        startTimestamp_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float durationDays_ ;
-      /**
-       * <code>float duration_days = 2;</code>
-       * @return The durationDays.
-       */
-      @java.lang.Override
-      public float getDurationDays() {
-        return durationDays_;
-      }
-      /**
-       * <code>float duration_days = 2;</code>
-       * @param value The durationDays to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDurationDays(float value) {
-        
-        durationDays_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float duration_days = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDurationDays() {
-        
-        durationDays_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_Schedule)
-    }
+        /**
+         * <code>string ip_address = 2;</code>
+         * @return The bytes for ipAddress.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getIpAddressBytes() {
+            java.lang.Object ref = ipAddress_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                ipAddress_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_Schedule)
-    private static final context.ContextOuterClass.Constraint_Schedule DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Schedule();
-    }
+        public static final int PORT_FIELD_NUMBER = 3;
 
-    public static context.ContextOuterClass.Constraint_Schedule getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private int port_ = 0;
 
-    private static final com.google.protobuf.Parser<Constraint_Schedule>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_Schedule>() {
-      @java.lang.Override
-      public Constraint_Schedule parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_Schedule(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_Schedule> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>uint32 port = 3;</code>
+         * @return The port.
+         */
+        @java.lang.Override
+        public int getPort() {
+            return port_;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_Schedule> getParserForType() {
-      return PARSER;
-    }
+        private byte memoizedIsInitialized = -1;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
+            }
+            if (port_ != 0) {
+                output.writeUInt32(3, port_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-  public interface GPS_PositionOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.GPS_Position)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
+            }
+            if (port_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    /**
-     * <code>float latitude = 1;</code>
-     * @return The latitude.
-     */
-    float getLatitude();
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (!getIpAddress().equals(other.getIpAddress()))
+                return false;
+            if (getPort() != other.getPort())
+                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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER;
+            hash = (53 * hash) + getIpAddress().hashCode();
+            hash = (37 * hash) + PORT_FIELD_NUMBER;
+            hash = (53 * hash) + getPort();
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>float longitude = 2;</code>
-     * @return The longitude.
-     */
-    float getLongitude();
-  }
-  /**
-   * Protobuf type {@code context.GPS_Position}
-   */
-  public static final class GPS_Position extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.GPS_Position)
-      GPS_PositionOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use GPS_Position.newBuilder() to construct.
-    private GPS_Position(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private GPS_Position() {
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new GPS_Position();
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private GPS_Position(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              latitude_ = input.readFloat();
-              break;
-            }
-            case 21: {
-
-              longitude_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int LATITUDE_FIELD_NUMBER = 1;
-    private float latitude_;
-    /**
-     * <code>float latitude = 1;</code>
-     * @return The latitude.
-     */
-    @java.lang.Override
-    public float getLatitude() {
-      return latitude_;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int LONGITUDE_FIELD_NUMBER = 2;
-    private float longitude_;
-    /**
-     * <code>float longitude = 2;</code>
-     * @return The longitude.
-     */
-    @java.lang.Override
-    public float getLongitude() {
-      return longitude_;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (latitude_ != 0F) {
-        output.writeFloat(1, latitude_);
-      }
-      if (longitude_ != 0F) {
-        output.writeFloat(2, longitude_);
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (latitude_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, latitude_);
-      }
-      if (longitude_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, longitude_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.GPS_Position)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.GPS_Position other = (context.ContextOuterClass.GPS_Position) obj;
-
-      if (java.lang.Float.floatToIntBits(getLatitude())
-          != java.lang.Float.floatToIntBits(
-              other.getLatitude())) return false;
-      if (java.lang.Float.floatToIntBits(getLongitude())
-          != java.lang.Float.floatToIntBits(
-              other.getLongitude())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getLatitude());
-      hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getLongitude());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.GPS_Position parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.GPS_Position prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.GPS_Position}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.GPS_Position)
-        context.ContextOuterClass.GPS_PositionOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        latitude_ = 0F;
-
-        longitude_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
-        return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.GPS_Position build() {
-        context.ContextOuterClass.GPS_Position result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.GPS_Position buildPartial() {
-        context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
-        result.latitude_ = latitude_;
-        result.longitude_ = longitude_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.GPS_Position) {
-          return mergeFrom((context.ContextOuterClass.GPS_Position)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.GPS_Position other) {
-        if (other == context.ContextOuterClass.GPS_Position.getDefaultInstance()) return this;
-        if (other.getLatitude() != 0F) {
-          setLatitude(other.getLatitude());
-        }
-        if (other.getLongitude() != 0F) {
-          setLongitude(other.getLongitude());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.GPS_Position parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.GPS_Position) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private float latitude_ ;
-      /**
-       * <code>float latitude = 1;</code>
-       * @return The latitude.
-       */
-      @java.lang.Override
-      public float getLatitude() {
-        return latitude_;
-      }
-      /**
-       * <code>float latitude = 1;</code>
-       * @param value The latitude to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLatitude(float value) {
-        
-        latitude_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float latitude = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLatitude() {
-        
-        latitude_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float longitude_ ;
-      /**
-       * <code>float longitude = 2;</code>
-       * @return The longitude.
-       */
-      @java.lang.Override
-      public float getLongitude() {
-        return longitude_;
-      }
-      /**
-       * <code>float longitude = 2;</code>
-       * @param value The longitude to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLongitude(float value) {
-        
-        longitude_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float longitude = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLongitude() {
-        
-        longitude_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.GPS_Position)
-    }
+        public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * ----- Miscellaneous -------------------------------------------------------------------------------------------------
+         * </pre>
+         *
+         * Protobuf type {@code context.TeraFlowController}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TeraFlowController)
+        context.ContextOuterClass.TeraFlowControllerOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
+            }
+
+            // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
+            private Builder() {
+            }
 
-    // @@protoc_insertion_point(class_scope:context.GPS_Position)
-    private static final context.ContextOuterClass.GPS_Position DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.GPS_Position();
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    public static context.ContextOuterClass.GPS_Position getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                ipAddress_ = "";
+                port_ = 0;
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<GPS_Position>
-        PARSER = new com.google.protobuf.AbstractParser<GPS_Position>() {
-      @java.lang.Override
-      public GPS_Position parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new GPS_Position(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<GPS_Position> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<GPS_Position> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
+                return context.ContextOuterClass.TeraFlowController.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.TeraFlowController build() {
+                context.ContextOuterClass.TeraFlowController result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-  }
+            @java.lang.Override
+            public context.ContextOuterClass.TeraFlowController buildPartial() {
+                context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-  public interface LocationOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Location)
-      com.google.protobuf.MessageOrBuilder {
+            private void buildPartial0(context.ContextOuterClass.TeraFlowController result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.ipAddress_ = ipAddress_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.port_ = port_;
+                }
+            }
 
-    /**
-     * <code>string region = 1;</code>
-     * @return Whether the region field is set.
-     */
-    boolean hasRegion();
-    /**
-     * <code>string region = 1;</code>
-     * @return The region.
-     */
-    java.lang.String getRegion();
-    /**
-     * <code>string region = 1;</code>
-     * @return The bytes for region.
-     */
-    com.google.protobuf.ByteString
-        getRegionBytes();
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.TeraFlowController) {
+                    return mergeFrom((context.ContextOuterClass.TeraFlowController) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     * @return Whether the gpsPosition field is set.
-     */
-    boolean hasGpsPosition();
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     * @return The gpsPosition.
-     */
-    context.ContextOuterClass.GPS_Position getGpsPosition();
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     */
-    context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();
-
-    public context.ContextOuterClass.Location.LocationCase getLocationCase();
-  }
-  /**
-   * Protobuf type {@code context.Location}
-   */
-  public static final class Location extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Location)
-      LocationOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Location.newBuilder() to construct.
-    private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Location() {
-    }
+            public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) {
+                if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (!other.getIpAddress().isEmpty()) {
+                    ipAddress_ = other.ipAddress_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.getPort() != 0) {
+                    setPort(other.getPort());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Location();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Location(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-              locationCase_ = 1;
-              location_ = s;
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.GPS_Position.Builder subBuilder = null;
-              if (locationCase_ == 2) {
-                subBuilder = ((context.ContextOuterClass.GPS_Position) location_).toBuilder();
-              }
-              location_ =
-                  input.readMessage(context.ContextOuterClass.GPS_Position.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.GPS_Position) location_);
-                location_ = subBuilder.buildPartial();
-              }
-              locationCase_ = 2;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Location_descriptor;
-    }
+            @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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    ipAddress_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    port_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
-    }
+            private int bitField0_;
 
-    private int locationCase_ = 0;
-    private java.lang.Object location_;
-    public enum LocationCase
-        implements com.google.protobuf.Internal.EnumLite,
-            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
-      REGION(1),
-      GPS_POSITION(2),
-      LOCATION_NOT_SET(0);
-      private final int value;
-      private LocationCase(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 LocationCase valueOf(int value) {
-        return forNumber(value);
-      }
-
-      public static LocationCase forNumber(int value) {
-        switch (value) {
-          case 1: return REGION;
-          case 2: return GPS_POSITION;
-          case 0: return LOCATION_NOT_SET;
-          default: return null;
-        }
-      }
-      public int getNumber() {
-        return this.value;
-      }
-    };
-
-    public LocationCase
-    getLocationCase() {
-      return LocationCase.forNumber(
-          locationCase_);
-    }
+            private context.ContextOuterClass.ContextId contextId_;
 
-    public static final int REGION_FIELD_NUMBER = 1;
-    /**
-     * <code>string region = 1;</code>
-     * @return Whether the region field is set.
-     */
-    public boolean hasRegion() {
-      return locationCase_ == 1;
-    }
-    /**
-     * <code>string region = 1;</code>
-     * @return The region.
-     */
-    public java.lang.String getRegion() {
-      java.lang.Object ref = "";
-      if (locationCase_ == 1) {
-        ref = location_;
-      }
-      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();
-        if (locationCase_ == 1) {
-          location_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>string region = 1;</code>
-     * @return The bytes for region.
-     */
-    public com.google.protobuf.ByteString
-        getRegionBytes() {
-      java.lang.Object ref = "";
-      if (locationCase_ == 1) {
-        ref = location_;
-      }
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        if (locationCase_ == 1) {
-          location_ = b;
-        }
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
 
-    public static final int GPS_POSITION_FIELD_NUMBER = 2;
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     * @return Whether the gpsPosition field is set.
-     */
-    @java.lang.Override
-    public boolean hasGpsPosition() {
-      return locationCase_ == 2;
-    }
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     * @return The gpsPosition.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.GPS_Position getGpsPosition() {
-      if (locationCase_ == 2) {
-         return (context.ContextOuterClass.GPS_Position) location_;
-      }
-      return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-    }
-    /**
-     * <code>.context.GPS_Position gps_position = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
-      if (locationCase_ == 2) {
-         return (context.ContextOuterClass.GPS_Position) location_;
-      }
-      return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (locationCase_ == 1) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_);
-      }
-      if (locationCase_ == 2) {
-        output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (locationCase_ == 1) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_);
-      }
-      if (locationCase_ == 2) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Location)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Location other = (context.ContextOuterClass.Location) obj;
-
-      if (!getLocationCase().equals(other.getLocationCase())) return false;
-      switch (locationCase_) {
-        case 1:
-          if (!getRegion()
-              .equals(other.getRegion())) return false;
-          break;
-        case 2:
-          if (!getGpsPosition()
-              .equals(other.getGpsPosition())) return false;
-          break;
-        case 0:
-        default:
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      switch (locationCase_) {
-        case 1:
-          hash = (37 * hash) + REGION_FIELD_NUMBER;
-          hash = (53 * hash) + getRegion().hashCode();
-          break;
-        case 2:
-          hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER;
-          hash = (53 * hash) + getGpsPosition().hashCode();
-          break;
-        case 0:
-        default:
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
 
-    public static context.ContextOuterClass.Location parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Location parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Location parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Location parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Location prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Location}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Location)
-        context.ContextOuterClass.LocationOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Location_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Location.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        locationCase_ = 0;
-        location_ = null;
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Location_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Location getDefaultInstanceForType() {
-        return context.ContextOuterClass.Location.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Location build() {
-        context.ContextOuterClass.Location result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Location buildPartial() {
-        context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
-        if (locationCase_ == 1) {
-          result.location_ = location_;
-        }
-        if (locationCase_ == 2) {
-          if (gpsPositionBuilder_ == null) {
-            result.location_ = location_;
-          } else {
-            result.location_ = gpsPositionBuilder_.build();
-          }
-        }
-        result.locationCase_ = locationCase_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Location) {
-          return mergeFrom((context.ContextOuterClass.Location)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Location other) {
-        if (other == context.ContextOuterClass.Location.getDefaultInstance()) return this;
-        switch (other.getLocationCase()) {
-          case REGION: {
-            locationCase_ = 1;
-            location_ = other.location_;
-            onChanged();
-            break;
-          }
-          case GPS_POSITION: {
-            mergeGpsPosition(other.getGpsPosition());
-            break;
-          }
-          case LOCATION_NOT_SET: {
-            break;
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Location parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Location) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int locationCase_ = 0;
-      private java.lang.Object location_;
-      public LocationCase
-          getLocationCase() {
-        return LocationCase.forNumber(
-            locationCase_);
-      }
-
-      public Builder clearLocation() {
-        locationCase_ = 0;
-        location_ = null;
-        onChanged();
-        return this;
-      }
-
-
-      /**
-       * <code>string region = 1;</code>
-       * @return Whether the region field is set.
-       */
-      @java.lang.Override
-      public boolean hasRegion() {
-        return locationCase_ == 1;
-      }
-      /**
-       * <code>string region = 1;</code>
-       * @return The region.
-       */
-      @java.lang.Override
-      public java.lang.String getRegion() {
-        java.lang.Object ref = "";
-        if (locationCase_ == 1) {
-          ref = location_;
-        }
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (locationCase_ == 1) {
-            location_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string region = 1;</code>
-       * @return The bytes for region.
-       */
-      @java.lang.Override
-      public com.google.protobuf.ByteString
-          getRegionBytes() {
-        java.lang.Object ref = "";
-        if (locationCase_ == 1) {
-          ref = location_;
-        }
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          if (locationCase_ == 1) {
-            location_ = b;
-          }
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string region = 1;</code>
-       * @param value The region to set.
-       * @return This builder for chaining.
-       */
-      public Builder setRegion(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  locationCase_ = 1;
-        location_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string region = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearRegion() {
-        if (locationCase_ == 1) {
-          locationCase_ = 0;
-          location_ = null;
-          onChanged();
-        }
-        return this;
-      }
-      /**
-       * <code>string region = 1;</code>
-       * @param value The bytes for region to set.
-       * @return This builder for chaining.
-       */
-      public Builder setRegionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        locationCase_ = 1;
-        location_ = value;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> gpsPositionBuilder_;
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       * @return Whether the gpsPosition field is set.
-       */
-      @java.lang.Override
-      public boolean hasGpsPosition() {
-        return locationCase_ == 2;
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       * @return The gpsPosition.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.GPS_Position getGpsPosition() {
-        if (gpsPositionBuilder_ == null) {
-          if (locationCase_ == 2) {
-            return (context.ContextOuterClass.GPS_Position) location_;
-          }
-          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-        } else {
-          if (locationCase_ == 2) {
-            return gpsPositionBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      public Builder setGpsPosition(context.ContextOuterClass.GPS_Position value) {
-        if (gpsPositionBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          location_ = value;
-          onChanged();
-        } else {
-          gpsPositionBuilder_.setMessage(value);
-        }
-        locationCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      public Builder setGpsPosition(
-          context.ContextOuterClass.GPS_Position.Builder builderForValue) {
-        if (gpsPositionBuilder_ == null) {
-          location_ = builderForValue.build();
-          onChanged();
-        } else {
-          gpsPositionBuilder_.setMessage(builderForValue.build());
-        }
-        locationCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      public Builder mergeGpsPosition(context.ContextOuterClass.GPS_Position value) {
-        if (gpsPositionBuilder_ == null) {
-          if (locationCase_ == 2 &&
-              location_ != context.ContextOuterClass.GPS_Position.getDefaultInstance()) {
-            location_ = context.ContextOuterClass.GPS_Position.newBuilder((context.ContextOuterClass.GPS_Position) location_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            location_ = value;
-          }
-          onChanged();
-        } else {
-          if (locationCase_ == 2) {
-            gpsPositionBuilder_.mergeFrom(value);
-          }
-          gpsPositionBuilder_.setMessage(value);
-        }
-        locationCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      public Builder clearGpsPosition() {
-        if (gpsPositionBuilder_ == null) {
-          if (locationCase_ == 2) {
-            locationCase_ = 0;
-            location_ = null;
-            onChanged();
-          }
-        } else {
-          if (locationCase_ == 2) {
-            locationCase_ = 0;
-            location_ = null;
-          }
-          gpsPositionBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      public context.ContextOuterClass.GPS_Position.Builder getGpsPositionBuilder() {
-        return getGpsPositionFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
-        if ((locationCase_ == 2) && (gpsPositionBuilder_ != null)) {
-          return gpsPositionBuilder_.getMessageOrBuilder();
-        } else {
-          if (locationCase_ == 2) {
-            return (context.ContextOuterClass.GPS_Position) location_;
-          }
-          return context.ContextOuterClass.GPS_Position.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.GPS_Position gps_position = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> 
-          getGpsPositionFieldBuilder() {
-        if (gpsPositionBuilder_ == null) {
-          if (!(locationCase_ == 2)) {
-            location_ = context.ContextOuterClass.GPS_Position.getDefaultInstance();
-          }
-          gpsPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder>(
-                  (context.ContextOuterClass.GPS_Position) location_,
-                  getParentForChildren(),
-                  isClean());
-          location_ = null;
-        }
-        locationCase_ = 2;
-        onChanged();;
-        return gpsPositionBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Location)
-    }
+            private java.lang.Object ipAddress_ = "";
+
+            /**
+             * <code>string ip_address = 2;</code>
+             * @return The ipAddress.
+             */
+            public java.lang.String getIpAddress() {
+                java.lang.Object ref = ipAddress_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    ipAddress_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    // @@protoc_insertion_point(class_scope:context.Location)
-    private static final context.ContextOuterClass.Location DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Location();
-    }
+            /**
+             * <code>string ip_address = 2;</code>
+             * @return The bytes for ipAddress.
+             */
+            public com.google.protobuf.ByteString getIpAddressBytes() {
+                java.lang.Object ref = ipAddress_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    ipAddress_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    public static context.ContextOuterClass.Location getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>string ip_address = 2;</code>
+             * @param value The ipAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIpAddress(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ipAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<Location>
-        PARSER = new com.google.protobuf.AbstractParser<Location>() {
-      @java.lang.Override
-      public Location parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Location(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Location> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>string ip_address = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIpAddress() {
+                ipAddress_ = getDefaultInstance().getIpAddress();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Location> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>string ip_address = 2;</code>
+             * @param value The bytes for ipAddress to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIpAddressBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                ipAddress_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Location getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private int port_;
 
-  }
+            /**
+             * <code>uint32 port = 3;</code>
+             * @return The port.
+             */
+            @java.lang.Override
+            public int getPort() {
+                return port_;
+            }
 
-  public interface Constraint_EndPointLocationOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointLocation)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>uint32 port = 3;</code>
+             * @param value The port to set.
+             * @return This builder for chaining.
+             */
+            public Builder setPort(int value) {
+                port_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+            /**
+             * <code>uint32 port = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearPort() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                port_ = 0;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.context.Location location = 2;</code>
-     * @return Whether the location field is set.
-     */
-    boolean hasLocation();
-    /**
-     * <code>.context.Location location = 2;</code>
-     * @return The location.
-     */
-    context.ContextOuterClass.Location getLocation();
-    /**
-     * <code>.context.Location location = 2;</code>
-     */
-    context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_EndPointLocation}
-   */
-  public static final class Constraint_EndPointLocation extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_EndPointLocation)
-      Constraint_EndPointLocationOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_EndPointLocation.newBuilder() to construct.
-    private Constraint_EndPointLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_EndPointLocation() {
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_EndPointLocation();
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.TeraFlowController)
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_EndPointLocation(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Location.Builder subBuilder = null;
-              if (location_ != null) {
-                subBuilder = location_.toBuilder();
-              }
-              location_ = input.readMessage(context.ContextOuterClass.Location.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(location_);
-                location_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
-    }
+        // @@protoc_insertion_point(class_scope:context.TeraFlowController)
+        private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController();
+        }
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+        public static context.ContextOuterClass.TeraFlowController getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    public static final int LOCATION_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Location location_;
-    /**
-     * <code>.context.Location location = 2;</code>
-     * @return Whether the location field is set.
-     */
-    @java.lang.Override
-    public boolean hasLocation() {
-      return location_ != null;
-    }
-    /**
-     * <code>.context.Location location = 2;</code>
-     * @return The location.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Location getLocation() {
-      return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
-    }
-    /**
-     * <code>.context.Location location = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-      return getLocation();
-    }
+        private static final com.google.protobuf.Parser<TeraFlowController> PARSER = new com.google.protobuf.AbstractParser<TeraFlowController>() {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public TeraFlowController 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();
+            }
+        };
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static com.google.protobuf.Parser<TeraFlowController> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (location_ != null) {
-        output.writeMessage(2, getLocation());
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<TeraFlowController> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (location_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getLocation());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
+        @java.lang.Override
+        public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointLocation)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_EndPointLocation other = (context.ContextOuterClass.Constraint_EndPointLocation) obj;
-
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (hasLocation() != other.hasLocation()) return false;
-      if (hasLocation()) {
-        if (!getLocation()
-            .equals(other.getLocation())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    public interface AuthenticationResultOrBuilder extends // @@protoc_insertion_point(interface_extends:context.AuthenticationResult)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      if (hasLocation()) {
-        hash = (37 * hash) + LOCATION_FIELD_NUMBER;
-        hash = (53 * hash) + getLocation().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        boolean hasContextId();
 
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        context.ContextOuterClass.ContextId getContextId();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointLocation prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
+        /**
+         * <code>bool authenticated = 2;</code>
+         * @return The authenticated.
+         */
+        boolean getAuthenticated();
     }
+
     /**
-     * Protobuf type {@code context.Constraint_EndPointLocation}
+     * Protobuf type {@code context.AuthenticationResult}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointLocation)
-        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        if (locationBuilder_ == null) {
-          location_ = null;
-        } else {
-          location_ = null;
-          locationBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointLocation build() {
-        context.ContextOuterClass.Constraint_EndPointLocation result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
-        context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        if (locationBuilder_ == null) {
-          result.location_ = location_;
-        } else {
-          result.location_ = locationBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_EndPointLocation) {
-          return mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointLocation other) {
-        if (other == context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) return this;
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (other.hasLocation()) {
-          mergeLocation(other.getLocation());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_EndPointLocation parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_EndPointLocation) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Location location_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> locationBuilder_;
-      /**
-       * <code>.context.Location location = 2;</code>
-       * @return Whether the location field is set.
-       */
-      public boolean hasLocation() {
-        return locationBuilder_ != null || location_ != null;
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       * @return The location.
-       */
-      public context.ContextOuterClass.Location getLocation() {
-        if (locationBuilder_ == null) {
-          return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
-        } else {
-          return locationBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public Builder setLocation(context.ContextOuterClass.Location value) {
-        if (locationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          location_ = value;
-          onChanged();
-        } else {
-          locationBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public Builder setLocation(
-          context.ContextOuterClass.Location.Builder builderForValue) {
-        if (locationBuilder_ == null) {
-          location_ = builderForValue.build();
-          onChanged();
-        } else {
-          locationBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public Builder mergeLocation(context.ContextOuterClass.Location value) {
-        if (locationBuilder_ == null) {
-          if (location_ != null) {
-            location_ =
-              context.ContextOuterClass.Location.newBuilder(location_).mergeFrom(value).buildPartial();
-          } else {
-            location_ = value;
-          }
-          onChanged();
-        } else {
-          locationBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public Builder clearLocation() {
-        if (locationBuilder_ == null) {
-          location_ = null;
-          onChanged();
-        } else {
-          location_ = null;
-          locationBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public context.ContextOuterClass.Location.Builder getLocationBuilder() {
-        
-        onChanged();
-        return getLocationFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
-        if (locationBuilder_ != null) {
-          return locationBuilder_.getMessageOrBuilder();
-        } else {
-          return location_ == null ?
-              context.ContextOuterClass.Location.getDefaultInstance() : location_;
-        }
-      }
-      /**
-       * <code>.context.Location location = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> 
-          getLocationFieldBuilder() {
-        if (locationBuilder_ == null) {
-          locationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(
-                  getLocation(),
-                  getParentForChildren(),
-                  isClean());
-          location_ = null;
-        }
-        return locationBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointLocation)
-    }
+    public static final class AuthenticationResult extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.AuthenticationResult)
+    AuthenticationResultOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_EndPointLocation)
-    private static final context.ContextOuterClass.Constraint_EndPointLocation DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointLocation();
-    }
+        private static final long serialVersionUID = 0L;
 
-    public static context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        // Use AuthenticationResult.newBuilder() to construct.
+        private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    private static final com.google.protobuf.Parser<Constraint_EndPointLocation>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointLocation>() {
-      @java.lang.Override
-      public Constraint_EndPointLocation parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_EndPointLocation(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_EndPointLocation> parser() {
-      return PARSER;
-    }
+        private AuthenticationResult() {
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_EndPointLocation> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AuthenticationResult();
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+        }
 
-  }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+        }
 
-  public interface Constraint_EndPointPriorityOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointPriority)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int CONTEXT_ID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+        private context.ContextOuterClass.ContextId contextId_;
 
-    /**
-     * <code>uint32 priority = 2;</code>
-     * @return The priority.
-     */
-    int getPriority();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_EndPointPriority}
-   */
-  public static final class Constraint_EndPointPriority extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_EndPointPriority)
-      Constraint_EndPointPriorityOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_EndPointPriority.newBuilder() to construct.
-    private Constraint_EndPointPriority(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_EndPointPriority() {
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return Whether the contextId field is set.
+         */
+        @java.lang.Override
+        public boolean hasContextId() {
+            return contextId_ != null;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_EndPointPriority();
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         * @return The contextId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextId getContextId() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_EndPointPriority(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              priority_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
-    }
+        /**
+         * <code>.context.ContextId context_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
-    }
+        public static final int AUTHENTICATED_FIELD_NUMBER = 2;
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+        private boolean authenticated_ = false;
+
+        /**
+         * <code>bool authenticated = 2;</code>
+         * @return The authenticated.
+         */
+        @java.lang.Override
+        public boolean getAuthenticated() {
+            return authenticated_;
+        }
+
+        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 (contextId_ != null) {
+                output.writeMessage(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                output.writeBool(2, authenticated_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (contextId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
+            }
+            if (authenticated_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
+            }
+            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 context.ContextOuterClass.AuthenticationResult)) {
+                return super.equals(obj);
+            }
+            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
+            if (hasContextId() != other.hasContextId())
+                return false;
+            if (hasContextId()) {
+                if (!getContextId().equals(other.getContextId()))
+                    return false;
+            }
+            if (getAuthenticated() != other.getAuthenticated())
+                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 (hasContextId()) {
+                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getContextId().hashCode();
+            }
+            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    public static final int PRIORITY_FIELD_NUMBER = 2;
-    private int priority_;
-    /**
-     * <code>uint32 priority = 2;</code>
-     * @return The priority.
-     */
-    @java.lang.Override
-    public int getPriority() {
-      return priority_;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (endpointId_ != null) {
-        output.writeMessage(1, getEndpointId());
-      }
-      if (priority_ != 0) {
-        output.writeUInt32(2, priority_);
-      }
-      unknownFields.writeTo(output);
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getEndpointId());
-      }
-      if (priority_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(2, priority_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointPriority)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_EndPointPriority other = (context.ContextOuterClass.Constraint_EndPointPriority) obj;
-
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (getPriority()
-          != other.getPriority()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
-      hash = (53 * hash) + getPriority();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointPriority prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_EndPointPriority}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointPriority)
-        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        priority_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointPriority build() {
-        context.ContextOuterClass.Constraint_EndPointPriority result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
-        context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        result.priority_ = priority_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_EndPointPriority) {
-          return mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointPriority other) {
-        if (other == context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) return this;
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (other.getPriority() != 0) {
-          setPriority(other.getPriority());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_EndPointPriority parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_EndPointPriority) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private int priority_ ;
-      /**
-       * <code>uint32 priority = 2;</code>
-       * @return The priority.
-       */
-      @java.lang.Override
-      public int getPriority() {
-        return priority_;
-      }
-      /**
-       * <code>uint32 priority = 2;</code>
-       * @param value The priority to set.
-       * @return This builder for chaining.
-       */
-      public Builder setPriority(int value) {
-        
-        priority_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 priority = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearPriority() {
-        
-        priority_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointPriority)
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_EndPointPriority)
-    private static final context.ContextOuterClass.Constraint_EndPointPriority DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointPriority();
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<Constraint_EndPointPriority>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointPriority>() {
-      @java.lang.Override
-      public Constraint_EndPointPriority parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_EndPointPriority(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_EndPointPriority> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_EndPointPriority> getParserForType() {
-      return PARSER;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-  }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-  public interface Constraint_SLA_LatencyOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Latency)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    /**
-     * <code>float e2e_latency_ms = 1;</code>
-     * @return The e2eLatencyMs.
-     */
-    float getE2ELatencyMs();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_SLA_Latency}
-   */
-  public static final class Constraint_SLA_Latency extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Latency)
-      Constraint_SLA_LatencyOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_SLA_Latency.newBuilder() to construct.
-    private Constraint_SLA_Latency(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_SLA_Latency() {
-    }
+        /**
+         * Protobuf type {@code context.AuthenticationResult}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
+        context.ContextOuterClass.AuthenticationResultOrBuilder {
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Latency();
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_SLA_Latency(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              e2ELatencyMs_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
-    }
+            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
+            private Builder() {
+            }
 
-    public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;
-    private float e2ELatencyMs_;
-    /**
-     * <code>float e2e_latency_ms = 1;</code>
-     * @return The e2eLatencyMs.
-     */
-    @java.lang.Override
-    public float getE2ELatencyMs() {
-      return e2ELatencyMs_;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                authenticated_ = false;
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (e2ELatencyMs_ != 0F) {
-        output.writeFloat(1, e2ELatencyMs_);
-      }
-      unknownFields.writeTo(output);
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (e2ELatencyMs_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, e2ELatencyMs_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult build() {
+                context.ContextOuterClass.AuthenticationResult result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Latency)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
-
-      if (java.lang.Float.floatToIntBits(getE2ELatencyMs())
-          != java.lang.Float.floatToIntBits(
-              other.getE2ELatencyMs())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public context.ContextOuterClass.AuthenticationResult buildPartial() {
+                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getE2ELatencyMs());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.authenticated_ = authenticated_;
+                }
+            }
 
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
+                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Latency prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
+                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
+                    return this;
+                if (other.hasContextId()) {
+                    mergeContextId(other.getContextId());
+                }
+                if (other.getAuthenticated() != false) {
+                    setAuthenticated(other.getAuthenticated());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_SLA_Latency}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Latency)
-        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        e2ELatencyMs_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Latency build() {
-        context.ContextOuterClass.Constraint_SLA_Latency result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
-        context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
-        result.e2ELatencyMs_ = e2ELatencyMs_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_SLA_Latency) {
-          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Latency other) {
-        if (other == context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) return this;
-        if (other.getE2ELatencyMs() != 0F) {
-          setE2ELatencyMs(other.getE2ELatencyMs());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Latency parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Latency) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private float e2ELatencyMs_ ;
-      /**
-       * <code>float e2e_latency_ms = 1;</code>
-       * @return The e2eLatencyMs.
-       */
-      @java.lang.Override
-      public float getE2ELatencyMs() {
-        return e2ELatencyMs_;
-      }
-      /**
-       * <code>float e2e_latency_ms = 1;</code>
-       * @param value The e2eLatencyMs to set.
-       * @return This builder for chaining.
-       */
-      public Builder setE2ELatencyMs(float value) {
-        
-        e2ELatencyMs_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float e2e_latency_ms = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearE2ELatencyMs() {
-        
-        e2ELatencyMs_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Latency)
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Latency)
-    private static final context.ContextOuterClass.Constraint_SLA_Latency DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Latency();
-    }
+            @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(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    authenticated_ = input.readBool();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    public static context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            private int bitField0_;
 
-    private static final com.google.protobuf.Parser<Constraint_SLA_Latency>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Latency>() {
-      @java.lang.Override
-      public Constraint_SLA_Latency parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Latency(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_SLA_Latency> parser() {
-      return PARSER;
-    }
+            private context.ContextOuterClass.ContextId contextId_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Latency> getParserForType() {
-      return PARSER;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return Whether the contextId field is set.
+             */
+            public boolean hasContextId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-  }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             * @return The contextId.
+             */
+            public context.ContextOuterClass.ContextId getContextId() {
+                if (contextIdBuilder_ == null) {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                } else {
+                    return contextIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    contextId_ = value;
+                } else {
+                    contextIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-  public interface Constraint_SLA_CapacityOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Capacity)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
+                if (contextIdBuilder_ == null) {
+                    contextId_ = builderForValue.build();
+                } else {
+                    contextIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>float capacity_gbps = 1;</code>
-     * @return The capacityGbps.
-     */
-    float getCapacityGbps();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_SLA_Capacity}
-   */
-  public static final class Constraint_SLA_Capacity extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Capacity)
-      Constraint_SLA_CapacityOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_SLA_Capacity.newBuilder() to construct.
-    private Constraint_SLA_Capacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_SLA_Capacity() {
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
+                if (contextIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
+                        getContextIdBuilder().mergeFrom(value);
+                    } else {
+                        contextId_ = value;
+                    }
+                } else {
+                    contextIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Capacity();
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public Builder clearContextId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                contextId_ = null;
+                if (contextIdBuilder_ != null) {
+                    contextIdBuilder_.dispose();
+                    contextIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_SLA_Capacity(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 13: {
-
-              capacityGbps_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getContextIdFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
+                if (contextIdBuilder_ != null) {
+                    return contextIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
+                }
+            }
 
-    public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;
-    private float capacityGbps_;
-    /**
-     * <code>float capacity_gbps = 1;</code>
-     * @return The capacityGbps.
-     */
-    @java.lang.Override
-    public float getCapacityGbps() {
-      return capacityGbps_;
-    }
+            /**
+             * <code>.context.ContextId context_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
+                if (contextIdBuilder_ == null) {
+                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
+                    contextId_ = null;
+                }
+                return contextIdBuilder_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            private boolean authenticated_;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return The authenticated.
+             */
+            @java.lang.Override
+            public boolean getAuthenticated() {
+                return authenticated_;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (capacityGbps_ != 0F) {
-        output.writeFloat(1, capacityGbps_);
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @param value The authenticated to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAuthenticated(boolean value) {
+                authenticated_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (capacityGbps_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(1, capacityGbps_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>bool authenticated = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAuthenticated() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                authenticated_ = false;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Capacity)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
-
-      if (java.lang.Float.floatToIntBits(getCapacityGbps())
-          != java.lang.Float.floatToIntBits(
-              other.getCapacityGbps())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getCapacityGbps());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
+        }
 
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
+        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Capacity prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        static {
+            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_SLA_Capacity}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Capacity)
-        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        capacityGbps_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Capacity build() {
-        context.ContextOuterClass.Constraint_SLA_Capacity result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
-        context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
-        result.capacityGbps_ = capacityGbps_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_SLA_Capacity) {
-          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Capacity other) {
-        if (other == context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) return this;
-        if (other.getCapacityGbps() != 0F) {
-          setCapacityGbps(other.getCapacityGbps());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Capacity parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Capacity) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private float capacityGbps_ ;
-      /**
-       * <code>float capacity_gbps = 1;</code>
-       * @return The capacityGbps.
-       */
-      @java.lang.Override
-      public float getCapacityGbps() {
-        return capacityGbps_;
-      }
-      /**
-       * <code>float capacity_gbps = 1;</code>
-       * @param value The capacityGbps to set.
-       * @return This builder for chaining.
-       */
-      public Builder setCapacityGbps(float value) {
-        
-        capacityGbps_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float capacity_gbps = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearCapacityGbps() {
-        
-        capacityGbps_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Capacity)
-    }
+        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Capacity)
-    private static final context.ContextOuterClass.Constraint_SLA_Capacity DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Capacity();
-    }
+        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
 
-    public static context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public AuthenticationResult 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();
+            }
+        };
 
-    private static final com.google.protobuf.Parser<Constraint_SLA_Capacity>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Capacity>() {
-      @java.lang.Override
-      public Constraint_SLA_Capacity parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Capacity(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_SLA_Capacity> parser() {
-      return PARSER;
-    }
+        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Capacity> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+        @java.lang.Override
+        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-  }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Empty_descriptor;
 
-  public interface Constraint_SLA_AvailabilityOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Availability)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Empty_fieldAccessorTable;
 
-    /**
-     * <code>uint32 num_disjoint_paths = 1;</code>
-     * @return The numDisjointPaths.
-     */
-    int getNumDisjointPaths();
-
-    /**
-     * <code>bool all_active = 2;</code>
-     * @return The allActive.
-     */
-    boolean getAllActive();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Uuid_descriptor;
 
-    /**
-     * <pre>
-     * 0.0 .. 100.0 percentage of availability
-     * </pre>
-     *
-     * <code>float availability = 3;</code>
-     * @return The availability.
-     */
-    float getAvailability();
-  }
-  /**
-   * Protobuf type {@code context.Constraint_SLA_Availability}
-   */
-  public static final class Constraint_SLA_Availability extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
-      Constraint_SLA_AvailabilityOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_SLA_Availability.newBuilder() to construct.
-    private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_SLA_Availability() {
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Uuid_fieldAccessorTable;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Availability();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Timestamp_descriptor;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_SLA_Availability(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              numDisjointPaths_ = input.readUInt32();
-              break;
-            }
-            case 16: {
-
-              allActive_ = input.readBool();
-              break;
-            }
-            case 29: {
-
-              availability_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Timestamp_fieldAccessorTable;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Event_descriptor;
 
-    public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;
-    private int numDisjointPaths_;
-    /**
-     * <code>uint32 num_disjoint_paths = 1;</code>
-     * @return The numDisjointPaths.
-     */
-    @java.lang.Override
-    public int getNumDisjointPaths() {
-      return numDisjointPaths_;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Event_fieldAccessorTable;
 
-    public static final int ALL_ACTIVE_FIELD_NUMBER = 2;
-    private boolean allActive_;
-    /**
-     * <code>bool all_active = 2;</code>
-     * @return The allActive.
-     */
-    @java.lang.Override
-    public boolean getAllActive() {
-      return allActive_;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextId_descriptor;
 
-    public static final int AVAILABILITY_FIELD_NUMBER = 3;
-    private float availability_;
-    /**
-     * <pre>
-     * 0.0 .. 100.0 percentage of availability
-     * </pre>
-     *
-     * <code>float availability = 3;</code>
-     * @return The availability.
-     */
-    @java.lang.Override
-    public float getAvailability() {
-      return availability_;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextId_fieldAccessorTable;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Context_descriptor;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Context_fieldAccessorTable;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (numDisjointPaths_ != 0) {
-        output.writeUInt32(1, numDisjointPaths_);
-      }
-      if (allActive_ != false) {
-        output.writeBool(2, allActive_);
-      }
-      if (availability_ != 0F) {
-        output.writeFloat(3, availability_);
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextIdList_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (numDisjointPaths_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(1, numDisjointPaths_);
-      }
-      if (allActive_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, allActive_);
-      }
-      if (availability_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, availability_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextIdList_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;
-
-      if (getNumDisjointPaths()
-          != other.getNumDisjointPaths()) return false;
-      if (getAllActive()
-          != other.getAllActive()) return false;
-      if (java.lang.Float.floatToIntBits(getAvailability())
-          != java.lang.Float.floatToIntBits(
-              other.getAvailability())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextList_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + NUM_DISJOINT_PATHS_FIELD_NUMBER;
-      hash = (53 * hash) + getNumDisjointPaths();
-      hash = (37 * hash) + ALL_ACTIVE_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getAllActive());
-      hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getAvailability());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextList_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextEvent_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextEvent_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_SLA_Availability}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Availability)
-        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        numDisjointPaths_ = 0;
-
-        allActive_ = false;
-
-        availability_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability build() {
-        context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
-        context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
-        result.numDisjointPaths_ = numDisjointPaths_;
-        result.allActive_ = allActive_;
-        result.availability_ = availability_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_SLA_Availability) {
-          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Availability other) {
-        if (other == context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) return this;
-        if (other.getNumDisjointPaths() != 0) {
-          setNumDisjointPaths(other.getNumDisjointPaths());
-        }
-        if (other.getAllActive() != false) {
-          setAllActive(other.getAllActive());
-        }
-        if (other.getAvailability() != 0F) {
-          setAvailability(other.getAvailability());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Availability parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Availability) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private int numDisjointPaths_ ;
-      /**
-       * <code>uint32 num_disjoint_paths = 1;</code>
-       * @return The numDisjointPaths.
-       */
-      @java.lang.Override
-      public int getNumDisjointPaths() {
-        return numDisjointPaths_;
-      }
-      /**
-       * <code>uint32 num_disjoint_paths = 1;</code>
-       * @param value The numDisjointPaths to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNumDisjointPaths(int value) {
-        
-        numDisjointPaths_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 num_disjoint_paths = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearNumDisjointPaths() {
-        
-        numDisjointPaths_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private boolean allActive_ ;
-      /**
-       * <code>bool all_active = 2;</code>
-       * @return The allActive.
-       */
-      @java.lang.Override
-      public boolean getAllActive() {
-        return allActive_;
-      }
-      /**
-       * <code>bool all_active = 2;</code>
-       * @param value The allActive to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAllActive(boolean value) {
-        
-        allActive_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool all_active = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAllActive() {
-        
-        allActive_ = false;
-        onChanged();
-        return this;
-      }
-
-      private float availability_ ;
-      /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
-       * @return The availability.
-       */
-      @java.lang.Override
-      public float getAvailability() {
-        return availability_;
-      }
-      /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
-       * @param value The availability to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAvailability(float value) {
-        
-        availability_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * 0.0 .. 100.0 percentage of availability
-       * </pre>
-       *
-       * <code>float availability = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAvailability() {
-        
-        availability_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyId_descriptor;
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Availability)
-    private static final context.ContextOuterClass.Constraint_SLA_Availability DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Availability();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyId_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Topology_descriptor;
 
-    private static final com.google.protobuf.Parser<Constraint_SLA_Availability>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Availability>() {
-      @java.lang.Override
-      public Constraint_SLA_Availability parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Availability(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_SLA_Availability> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Topology_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Availability> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyDetails_descriptor;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyDetails_fieldAccessorTable;
 
-  }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyIdList_descriptor;
 
-  public interface Constraint_SLA_Isolation_levelOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyIdList_fieldAccessorTable;
 
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return A list containing the isolationLevel.
-     */
-    java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList();
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return The count of isolationLevel.
-     */
-    int getIsolationLevelCount();
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @param index The index of the element to return.
-     * @return The isolationLevel at the given index.
-     */
-    context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index);
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return A list containing the enum numeric values on the wire for isolationLevel.
-     */
-    java.util.List<java.lang.Integer>
-    getIsolationLevelValueList();
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of isolationLevel at the given index.
-     */
-    int getIsolationLevelValue(int index);
-  }
-  /**
-   * Protobuf type {@code context.Constraint_SLA_Isolation_level}
-   */
-  public static final class Constraint_SLA_Isolation_level extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
-      Constraint_SLA_Isolation_levelOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_SLA_Isolation_level.newBuilder() to construct.
-    private Constraint_SLA_Isolation_level(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_SLA_Isolation_level() {
-      isolationLevel_ = java.util.Collections.emptyList();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyList_descriptor;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_SLA_Isolation_level();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyList_fieldAccessorTable;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_SLA_Isolation_level(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              isolationLevel_.add(rawValue);
-              break;
-            }
-            case 10: {
-              int length = input.readRawVarint32();
-              int oldLimit = input.pushLimit(length);
-              while(input.getBytesUntilLimit() > 0) {
-                int rawValue = input.readEnum();
-                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                  isolationLevel_ = new java.util.ArrayList<java.lang.Integer>();
-                  mutable_bitField0_ |= 0x00000001;
-                }
-                isolationLevel_.add(rawValue);
-              }
-              input.popLimit(oldLimit);
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyEvent_descriptor;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyEvent_fieldAccessorTable;
 
-    public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;
-    private java.util.List<java.lang.Integer> isolationLevel_;
-    private static final com.google.protobuf.Internal.ListAdapter.Converter<
-        java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ =
-            new com.google.protobuf.Internal.ListAdapter.Converter<
-                java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {
-              public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
-                @SuppressWarnings("deprecation")
-                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.valueOf(from);
-                return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
-              }
-            };
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return A list containing the isolationLevel.
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
-      return new com.google.protobuf.Internal.ListAdapter<
-          java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
-    }
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return The count of isolationLevel.
-     */
-    @java.lang.Override
-    public int getIsolationLevelCount() {
-      return isolationLevel_.size();
-    }
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @param index The index of the element to return.
-     * @return The isolationLevel at the given index.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
-      return isolationLevel_converter_.convert(isolationLevel_.get(index));
-    }
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @return A list containing the enum numeric values on the wire for isolationLevel.
-     */
-    @java.lang.Override
-    public java.util.List<java.lang.Integer>
-    getIsolationLevelValueList() {
-      return isolationLevel_;
-    }
-    /**
-     * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-     * @param index The index of the value to return.
-     * @return The enum numeric value on the wire of isolationLevel at the given index.
-     */
-    @java.lang.Override
-    public int getIsolationLevelValue(int index) {
-      return isolationLevel_.get(index);
-    }
-    private int isolationLevelMemoizedSerializedSize;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceId_descriptor;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceId_fieldAccessorTable;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Device_descriptor;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (getIsolationLevelList().size() > 0) {
-        output.writeUInt32NoTag(10);
-        output.writeUInt32NoTag(isolationLevelMemoizedSerializedSize);
-      }
-      for (int i = 0; i < isolationLevel_.size(); i++) {
-        output.writeEnumNoTag(isolationLevel_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Device_fieldAccessorTable;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      {
-        int dataSize = 0;
-        for (int i = 0; i < isolationLevel_.size(); i++) {
-          dataSize += com.google.protobuf.CodedOutputStream
-            .computeEnumSizeNoTag(isolationLevel_.get(i));
-        }
-        size += dataSize;
-        if (!getIsolationLevelList().isEmpty()) {  size += 1;
-          size += com.google.protobuf.CodedOutputStream
-            .computeUInt32SizeNoTag(dataSize);
-        }isolationLevelMemoizedSerializedSize = dataSize;
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Component_descriptor;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
-
-      if (!isolationLevel_.equals(other.isolationLevel_)) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Component_fieldAccessorTable;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getIsolationLevelCount() > 0) {
-        hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
-        hash = (53 * hash) + isolationLevel_.hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Component_AttributesEntry_descriptor;
 
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Component_AttributesEntry_fieldAccessorTable;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceConfig_descriptor;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_SLA_Isolation_level}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Isolation_level)
-        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        isolationLevel_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level build() {
-        context.ContextOuterClass.Constraint_SLA_Isolation_level result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
-        context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.isolationLevel_ = isolationLevel_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level) {
-          return mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Isolation_level other) {
-        if (other == context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) return this;
-        if (!other.isolationLevel_.isEmpty()) {
-          if (isolationLevel_.isEmpty()) {
-            isolationLevel_ = other.isolationLevel_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureIsolationLevelIsMutable();
-            isolationLevel_.addAll(other.isolationLevel_);
-          }
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_SLA_Isolation_level parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_SLA_Isolation_level) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<java.lang.Integer> isolationLevel_ =
-        java.util.Collections.emptyList();
-      private void ensureIsolationLevelIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          isolationLevel_ = new java.util.ArrayList<java.lang.Integer>(isolationLevel_);
-          bitField0_ |= 0x00000001;
-        }
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @return A list containing the isolationLevel.
-       */
-      public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
-        return new com.google.protobuf.Internal.ListAdapter<
-            java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @return The count of isolationLevel.
-       */
-      public int getIsolationLevelCount() {
-        return isolationLevel_.size();
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param index The index of the element to return.
-       * @return The isolationLevel at the given index.
-       */
-      public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
-        return isolationLevel_converter_.convert(isolationLevel_.get(index));
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param index The index to set the value at.
-       * @param value The isolationLevel to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIsolationLevel(
-          int index, context.ContextOuterClass.IsolationLevelEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.set(index, value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param value The isolationLevel to add.
-       * @return This builder for chaining.
-       */
-      public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.add(value.getNumber());
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param values The isolationLevel to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllIsolationLevel(
-          java.lang.Iterable<? extends context.ContextOuterClass.IsolationLevelEnum> values) {
-        ensureIsolationLevelIsMutable();
-        for (context.ContextOuterClass.IsolationLevelEnum value : values) {
-          isolationLevel_.add(value.getNumber());
-        }
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIsolationLevel() {
-        isolationLevel_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @return A list containing the enum numeric values on the wire for isolationLevel.
-       */
-      public java.util.List<java.lang.Integer>
-      getIsolationLevelValueList() {
-        return java.util.Collections.unmodifiableList(isolationLevel_);
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of isolationLevel at the given index.
-       */
-      public int getIsolationLevelValue(int index) {
-        return isolationLevel_.get(index);
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param index The index of the value to return.
-       * @return The enum numeric value on the wire of isolationLevel at the given index.
-       * @return This builder for chaining.
-       */
-      public Builder setIsolationLevelValue(
-          int index, int value) {
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param value The enum numeric value on the wire for isolationLevel to add.
-       * @return This builder for chaining.
-       */
-      public Builder addIsolationLevelValue(int value) {
-        ensureIsolationLevelIsMutable();
-        isolationLevel_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
-       * @param values The enum numeric values on the wire for isolationLevel to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllIsolationLevelValue(
-          java.lang.Iterable<java.lang.Integer> values) {
-        ensureIsolationLevelIsMutable();
-        for (int value : values) {
-          isolationLevel_.add(value);
-        }
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceConfig_fieldAccessorTable;
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Isolation_level)
-    private static final context.ContextOuterClass.Constraint_SLA_Isolation_level DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Isolation_level();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceIdList_descriptor;
 
-    public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceIdList_fieldAccessorTable;
 
-    private static final com.google.protobuf.Parser<Constraint_SLA_Isolation_level>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Isolation_level>() {
-      @java.lang.Override
-      public Constraint_SLA_Isolation_level parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_SLA_Isolation_level(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_SLA_Isolation_level> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceList_descriptor;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_SLA_Isolation_level> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceList_fieldAccessorTable;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceFilter_descriptor;
 
-  }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceFilter_fieldAccessorTable;
 
-  public interface Constraint_ExclusionsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint_Exclusions)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceEvent_descriptor;
 
-    /**
-     * <code>bool is_permanent = 1;</code>
-     * @return The isPermanent.
-     */
-    boolean getIsPermanent();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceEvent_fieldAccessorTable;
 
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    java.util.List<context.ContextOuterClass.DeviceId> 
-        getDeviceIdsList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    context.ContextOuterClass.DeviceId getDeviceIds(int index);
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    int getDeviceIdsCount();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList();
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index);
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkId_descriptor;
 
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    java.util.List<context.ContextOuterClass.EndPointId> 
-        getEndpointIdsList();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointId getEndpointIds(int index);
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    int getEndpointIdsCount();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList();
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index);
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkId_fieldAccessorTable;
 
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    java.util.List<context.ContextOuterClass.LinkId> 
-        getLinkIdsList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    context.ContextOuterClass.LinkId getLinkIds(int index);
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    int getLinkIdsCount();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList();
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code context.Constraint_Exclusions}
-   */
-  public static final class Constraint_Exclusions extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint_Exclusions)
-      Constraint_ExclusionsOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint_Exclusions.newBuilder() to construct.
-    private Constraint_Exclusions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint_Exclusions() {
-      deviceIds_ = java.util.Collections.emptyList();
-      endpointIds_ = java.util.Collections.emptyList();
-      linkIds_ = java.util.Collections.emptyList();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkAttributes_descriptor;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint_Exclusions();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkAttributes_fieldAccessorTable;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint_Exclusions(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              isPermanent_ = input.readBool();
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deviceIds_.add(
-                  input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry));
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
-                endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>();
-                mutable_bitField0_ |= 0x00000002;
-              }
-              endpointIds_.add(
-                  input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
-              break;
-            }
-            case 34: {
-              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>();
-                mutable_bitField0_ |= 0x00000004;
-              }
-              linkIds_.add(
-                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
-          endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-        }
-        if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Link_descriptor;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.Builder.class);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Link_fieldAccessorTable;
 
-    public static final int IS_PERMANENT_FIELD_NUMBER = 1;
-    private boolean isPermanent_;
-    /**
-     * <code>bool is_permanent = 1;</code>
-     * @return The isPermanent.
-     */
-    @java.lang.Override
-    public boolean getIsPermanent() {
-      return isPermanent_;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkIdList_descriptor;
 
-    public static final int DEVICE_IDS_FIELD_NUMBER = 2;
-    private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-        getDeviceIdsOrBuilderList() {
-      return deviceIds_;
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    @java.lang.Override
-    public int getDeviceIdsCount() {
-      return deviceIds_.size();
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-      return deviceIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.DeviceId device_ids = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-        int index) {
-      return deviceIds_.get(index);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkIdList_fieldAccessorTable;
 
-    public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;
-    private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-      return endpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-        getEndpointIdsOrBuilderList() {
-      return endpointIds_;
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public int getEndpointIdsCount() {
-      return endpointIds_.size();
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-      return endpointIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-        int index) {
-      return endpointIds_.get(index);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkList_descriptor;
 
-    public static final int LINK_IDS_FIELD_NUMBER = 4;
-    private java.util.List<context.ContextOuterClass.LinkId> linkIds_;
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-        getLinkIdsOrBuilderList() {
-      return linkIds_;
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public int getLinkIdsCount() {
-      return linkIds_.size();
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkIds(int index) {
-      return linkIds_.get(index);
-    }
-    /**
-     * <code>repeated .context.LinkId link_ids = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-        int index) {
-      return linkIds_.get(index);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkList_fieldAccessorTable;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkEvent_descriptor;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkEvent_fieldAccessorTable;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (isPermanent_ != false) {
-        output.writeBool(1, isPermanent_);
-      }
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        output.writeMessage(2, deviceIds_.get(i));
-      }
-      for (int i = 0; i < endpointIds_.size(); i++) {
-        output.writeMessage(3, endpointIds_.get(i));
-      }
-      for (int i = 0; i < linkIds_.size(); i++) {
-        output.writeMessage(4, linkIds_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceId_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (isPermanent_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(1, isPermanent_);
-      }
-      for (int i = 0; i < deviceIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, deviceIds_.get(i));
-      }
-      for (int i = 0; i < endpointIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, endpointIds_.get(i));
-      }
-      for (int i = 0; i < linkIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, linkIds_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceId_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint_Exclusions)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint_Exclusions other = (context.ContextOuterClass.Constraint_Exclusions) obj;
-
-      if (getIsPermanent()
-          != other.getIsPermanent()) return false;
-      if (!getDeviceIdsList()
-          .equals(other.getDeviceIdsList())) return false;
-      if (!getEndpointIdsList()
-          .equals(other.getEndpointIdsList())) return false;
-      if (!getLinkIdsList()
-          .equals(other.getLinkIdsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Service_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + IS_PERMANENT_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIsPermanent());
-      if (getDeviceIdsCount() > 0) {
-        hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceIdsList().hashCode();
-      }
-      if (getEndpointIdsCount() > 0) {
-        hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointIdsList().hashCode();
-      }
-      if (getLinkIdsCount() > 0) {
-        hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkIdsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Service_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint_Exclusions parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceStatus_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint_Exclusions prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceStatus_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint_Exclusions}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint_Exclusions)
-        context.ContextOuterClass.Constraint_ExclusionsOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDeviceIdsFieldBuilder();
-          getEndpointIdsFieldBuilder();
-          getLinkIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        isPermanent_ = false;
-
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Exclusions build() {
-        context.ContextOuterClass.Constraint_Exclusions result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
-        context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
-        int from_bitField0_ = bitField0_;
-        result.isPermanent_ = isPermanent_;
-        if (deviceIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.deviceIds_ = deviceIds_;
-        } else {
-          result.deviceIds_ = deviceIdsBuilder_.build();
-        }
-        if (endpointIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
-            endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
-            bitField0_ = (bitField0_ & ~0x00000002);
-          }
-          result.endpointIds_ = endpointIds_;
-        } else {
-          result.endpointIds_ = endpointIdsBuilder_.build();
-        }
-        if (linkIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000004) != 0)) {
-            linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
-            bitField0_ = (bitField0_ & ~0x00000004);
-          }
-          result.linkIds_ = linkIds_;
-        } else {
-          result.linkIds_ = linkIdsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint_Exclusions) {
-          return mergeFrom((context.ContextOuterClass.Constraint_Exclusions)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint_Exclusions other) {
-        if (other == context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) return this;
-        if (other.getIsPermanent() != false) {
-          setIsPermanent(other.getIsPermanent());
-        }
-        if (deviceIdsBuilder_ == null) {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIds_.isEmpty()) {
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDeviceIdsIsMutable();
-              deviceIds_.addAll(other.deviceIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.deviceIds_.isEmpty()) {
-            if (deviceIdsBuilder_.isEmpty()) {
-              deviceIdsBuilder_.dispose();
-              deviceIdsBuilder_ = null;
-              deviceIds_ = other.deviceIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              deviceIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDeviceIdsFieldBuilder() : null;
-            } else {
-              deviceIdsBuilder_.addAllMessages(other.deviceIds_);
-            }
-          }
-        }
-        if (endpointIdsBuilder_ == null) {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIds_.isEmpty()) {
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-            } else {
-              ensureEndpointIdsIsMutable();
-              endpointIds_.addAll(other.endpointIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.endpointIds_.isEmpty()) {
-            if (endpointIdsBuilder_.isEmpty()) {
-              endpointIdsBuilder_.dispose();
-              endpointIdsBuilder_ = null;
-              endpointIds_ = other.endpointIds_;
-              bitField0_ = (bitField0_ & ~0x00000002);
-              endpointIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getEndpointIdsFieldBuilder() : null;
-            } else {
-              endpointIdsBuilder_.addAllMessages(other.endpointIds_);
-            }
-          }
-        }
-        if (linkIdsBuilder_ == null) {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIds_.isEmpty()) {
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-            } else {
-              ensureLinkIdsIsMutable();
-              linkIds_.addAll(other.linkIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.linkIds_.isEmpty()) {
-            if (linkIdsBuilder_.isEmpty()) {
-              linkIdsBuilder_.dispose();
-              linkIdsBuilder_ = null;
-              linkIds_ = other.linkIds_;
-              bitField0_ = (bitField0_ & ~0x00000004);
-              linkIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getLinkIdsFieldBuilder() : null;
-            } else {
-              linkIdsBuilder_.addAllMessages(other.linkIds_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint_Exclusions parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint_Exclusions) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private boolean isPermanent_ ;
-      /**
-       * <code>bool is_permanent = 1;</code>
-       * @return The isPermanent.
-       */
-      @java.lang.Override
-      public boolean getIsPermanent() {
-        return isPermanent_;
-      }
-      /**
-       * <code>bool is_permanent = 1;</code>
-       * @param value The isPermanent to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIsPermanent(boolean value) {
-        
-        isPermanent_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool is_permanent = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIsPermanent() {
-        
-        isPermanent_ = false;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ =
-        java.util.Collections.emptyList();
-      private void ensureDeviceIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;
-
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
-        if (deviceIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        } else {
-          return deviceIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public int getDeviceIdsCount() {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.size();
-        } else {
-          return deviceIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);
-        } else {
-          return deviceIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder setDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId value) {
-        if (deviceIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, value);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder addDeviceIds(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder addDeviceIds(
-          int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder addAllDeviceIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, deviceIds_);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder clearDeviceIds() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public Builder removeDeviceIds(int index) {
-        if (deviceIdsBuilder_ == null) {
-          ensureDeviceIdsIsMutable();
-          deviceIds_.remove(index);
-          onChanged();
-        } else {
-          deviceIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(
-          int index) {
-        if (deviceIdsBuilder_ == null) {
-          return deviceIds_.get(index);  } else {
-          return deviceIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> 
-           getDeviceIdsOrBuilderList() {
-        if (deviceIdsBuilder_ != null) {
-          return deviceIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(deviceIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(
-          int index) {
-        return getDeviceIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.DeviceId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.DeviceId device_ids = 2;</code>
-       */
-      public java.util.List<context.ContextOuterClass.DeviceId.Builder> 
-           getDeviceIdsBuilderList() {
-        return getDeviceIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdsFieldBuilder() {
-        if (deviceIdsBuilder_ == null) {
-          deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  deviceIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          deviceIds_ = null;
-        }
-        return deviceIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ =
-        java.util.Collections.emptyList();
-      private void ensureEndpointIdsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
-          endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
-          bitField0_ |= 0x00000002;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;
-
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
-        if (endpointIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(endpointIds_);
-        } else {
-          return endpointIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public int getEndpointIdsCount() {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.size();
-        } else {
-          return endpointIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);
-        } else {
-          return endpointIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder setEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder addEndpointIds(
-          int index, context.ContextOuterClass.EndPointId value) {
-        if (endpointIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(index, value);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder addEndpointIds(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder addEndpointIds(
-          int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder addAllEndpointIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, endpointIds_);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder clearEndpointIds() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public Builder removeEndpointIds(int index) {
-        if (endpointIdsBuilder_ == null) {
-          ensureEndpointIdsIsMutable();
-          endpointIds_.remove(index);
-          onChanged();
-        } else {
-          endpointIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(
-          int index) {
-        if (endpointIdsBuilder_ == null) {
-          return endpointIds_.get(index);  } else {
-          return endpointIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> 
-           getEndpointIdsOrBuilderList() {
-        if (endpointIdsBuilder_ != null) {
-          return endpointIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(endpointIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(
-          int index) {
-        return getEndpointIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.EndPointId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
-       */
-      public java.util.List<context.ContextOuterClass.EndPointId.Builder> 
-           getEndpointIdsBuilderList() {
-        return getEndpointIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdsFieldBuilder() {
-        if (endpointIdsBuilder_ == null) {
-          endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  endpointIds_,
-                  ((bitField0_ & 0x00000002) != 0),
-                  getParentForChildren(),
-                  isClean());
-          endpointIds_ = null;
-        }
-        return endpointIdsBuilder_;
-      }
-
-      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
-        java.util.Collections.emptyList();
-      private void ensureLinkIdsIsMutable() {
-        if (!((bitField0_ & 0x00000004) != 0)) {
-          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
-          bitField0_ |= 0x00000004;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
-
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
-        if (linkIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        } else {
-          return linkIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public int getLinkIdsCount() {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.size();
-        } else {
-          return linkIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId getLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);
-        } else {
-          return linkIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder setLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId value) {
-        if (linkIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, value);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addLinkIds(
-          int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          linkIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder addAllLinkIds(
-          java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, linkIds_);
-          onChanged();
-        } else {
-          linkIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder clearLinkIds() {
-        if (linkIdsBuilder_ == null) {
-          linkIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000004);
-          onChanged();
-        } else {
-          linkIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public Builder removeLinkIds(int index) {
-        if (linkIdsBuilder_ == null) {
-          ensureLinkIdsIsMutable();
-          linkIds_.remove(index);
-          onChanged();
-        } else {
-          linkIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(
-          int index) {
-        if (linkIdsBuilder_ == null) {
-          return linkIds_.get(index);  } else {
-          return linkIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> 
-           getLinkIdsOrBuilderList() {
-        if (linkIdsBuilder_ != null) {
-          return linkIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(linkIds_);
-        }
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
-        return getLinkIdsFieldBuilder().addBuilder(
-            context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(
-          int index) {
-        return getLinkIdsFieldBuilder().addBuilder(
-            index, context.ContextOuterClass.LinkId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .context.LinkId link_ids = 4;</code>
-       */
-      public java.util.List<context.ContextOuterClass.LinkId.Builder> 
-           getLinkIdsBuilderList() {
-        return getLinkIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdsFieldBuilder() {
-        if (linkIdsBuilder_ == null) {
-          linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  linkIds_,
-                  ((bitField0_ & 0x00000004) != 0),
-                  getParentForChildren(),
-                  isClean());
-          linkIds_ = null;
-        }
-        return linkIdsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint_Exclusions)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceConfig_descriptor;
 
-    // @@protoc_insertion_point(class_scope:context.Constraint_Exclusions)
-    private static final context.ContextOuterClass.Constraint_Exclusions DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Exclusions();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceConfig_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint_Exclusions getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceIdList_descriptor;
 
-    private static final com.google.protobuf.Parser<Constraint_Exclusions>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint_Exclusions>() {
-      @java.lang.Override
-      public Constraint_Exclusions parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint_Exclusions(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint_Exclusions> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceIdList_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint_Exclusions> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceList_descriptor;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceList_fieldAccessorTable;
 
-  }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceFilter_descriptor;
 
-  public interface ConstraintOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.Constraint)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceFilter_fieldAccessorTable;
 
-    /**
-     * <code>.context.ConstraintActionEnum action = 1;</code>
-     * @return The enum numeric value on the wire for action.
-     */
-    int getActionValue();
-    /**
-     * <code>.context.ConstraintActionEnum action = 1;</code>
-     * @return The action.
-     */
-    context.ContextOuterClass.ConstraintActionEnum getAction();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceEvent_descriptor;
 
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     * @return Whether the custom field is set.
-     */
-    boolean hasCustom();
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     * @return The custom.
-     */
-    context.ContextOuterClass.Constraint_Custom getCustom();
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     */
-    context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceEvent_fieldAccessorTable;
 
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     * @return Whether the schedule field is set.
-     */
-    boolean hasSchedule();
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     * @return The schedule.
-     */
-    context.ContextOuterClass.Constraint_Schedule getSchedule();
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     */
-    context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceId_descriptor;
 
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     * @return Whether the endpointLocation field is set.
-     */
-    boolean hasEndpointLocation();
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     * @return The endpointLocation.
-     */
-    context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     */
-    context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceId_fieldAccessorTable;
 
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     * @return Whether the endpointPriority field is set.
-     */
-    boolean hasEndpointPriority();
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     * @return The endpointPriority.
-     */
-    context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     */
-    context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Slice_descriptor;
 
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     * @return Whether the slaCapacity field is set.
-     */
-    boolean hasSlaCapacity();
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     * @return The slaCapacity.
-     */
-    context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     */
-    context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Slice_fieldAccessorTable;
 
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     * @return Whether the slaLatency field is set.
-     */
-    boolean hasSlaLatency();
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     * @return The slaLatency.
-     */
-    context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     */
-    context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceOwner_descriptor;
 
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     * @return Whether the slaAvailability field is set.
-     */
-    boolean hasSlaAvailability();
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     * @return The slaAvailability.
-     */
-    context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     */
-    context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceOwner_fieldAccessorTable;
 
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     * @return Whether the slaIsolation field is set.
-     */
-    boolean hasSlaIsolation();
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     * @return The slaIsolation.
-     */
-    context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     */
-    context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceStatus_descriptor;
 
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     * @return Whether the exclusions field is set.
-     */
-    boolean hasExclusions();
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     * @return The exclusions.
-     */
-    context.ContextOuterClass.Constraint_Exclusions getExclusions();
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     */
-    context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();
-
-    public context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
-  }
-  /**
-   * Protobuf type {@code context.Constraint}
-   */
-  public static final class Constraint extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.Constraint)
-      ConstraintOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Constraint.newBuilder() to construct.
-    private Constraint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Constraint() {
-      action_ = 0;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceStatus_fieldAccessorTable;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Constraint();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceConfig_descriptor;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Constraint(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              int rawValue = input.readEnum();
-
-              action_ = rawValue;
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Constraint_Custom.Builder subBuilder = null;
-              if (constraintCase_ == 2) {
-                subBuilder = ((context.ContextOuterClass.Constraint_Custom) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_Custom.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Custom) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 2;
-              break;
-            }
-            case 26: {
-              context.ContextOuterClass.Constraint_Schedule.Builder subBuilder = null;
-              if (constraintCase_ == 3) {
-                subBuilder = ((context.ContextOuterClass.Constraint_Schedule) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_Schedule.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Schedule) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 3;
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.Constraint_EndPointLocation.Builder subBuilder = null;
-              if (constraintCase_ == 4) {
-                subBuilder = ((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_EndPointLocation.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 4;
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.Constraint_EndPointPriority.Builder subBuilder = null;
-              if (constraintCase_ == 5) {
-                subBuilder = ((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_EndPointPriority.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 5;
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.Constraint_SLA_Capacity.Builder subBuilder = null;
-              if (constraintCase_ == 6) {
-                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Capacity.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 6;
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.Constraint_SLA_Latency.Builder subBuilder = null;
-              if (constraintCase_ == 7) {
-                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Latency.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 7;
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.Constraint_SLA_Availability.Builder subBuilder = null;
-              if (constraintCase_ == 8) {
-                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Availability.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 8;
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder subBuilder = null;
-              if (constraintCase_ == 9) {
-                subBuilder = ((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_SLA_Isolation_level.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 9;
-              break;
-            }
-            case 82: {
-              context.ContextOuterClass.Constraint_Exclusions.Builder subBuilder = null;
-              if (constraintCase_ == 10) {
-                subBuilder = ((context.ContextOuterClass.Constraint_Exclusions) constraint_).toBuilder();
-              }
-              constraint_ =
-                  input.readMessage(context.ContextOuterClass.Constraint_Exclusions.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom((context.ContextOuterClass.Constraint_Exclusions) constraint_);
-                constraint_ = subBuilder.buildPartial();
-              }
-              constraintCase_ = 10;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceConfig_fieldAccessorTable;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceIdList_descriptor;
 
-    private int constraintCase_ = 0;
-    private java.lang.Object constraint_;
-    public enum ConstraintCase
-        implements com.google.protobuf.Internal.EnumLite,
-            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
-      CUSTOM(2),
-      SCHEDULE(3),
-      ENDPOINT_LOCATION(4),
-      ENDPOINT_PRIORITY(5),
-      SLA_CAPACITY(6),
-      SLA_LATENCY(7),
-      SLA_AVAILABILITY(8),
-      SLA_ISOLATION(9),
-      EXCLUSIONS(10),
-      CONSTRAINT_NOT_SET(0);
-      private final int value;
-      private ConstraintCase(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 ConstraintCase valueOf(int value) {
-        return forNumber(value);
-      }
-
-      public static ConstraintCase forNumber(int value) {
-        switch (value) {
-          case 2: return CUSTOM;
-          case 3: return SCHEDULE;
-          case 4: return ENDPOINT_LOCATION;
-          case 5: return ENDPOINT_PRIORITY;
-          case 6: return SLA_CAPACITY;
-          case 7: return SLA_LATENCY;
-          case 8: return SLA_AVAILABILITY;
-          case 9: return SLA_ISOLATION;
-          case 10: return EXCLUSIONS;
-          case 0: return CONSTRAINT_NOT_SET;
-          default: return null;
-        }
-      }
-      public int getNumber() {
-        return this.value;
-      }
-    };
-
-    public ConstraintCase
-    getConstraintCase() {
-      return ConstraintCase.forNumber(
-          constraintCase_);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceIdList_fieldAccessorTable;
 
-    public static final int ACTION_FIELD_NUMBER = 1;
-    private int action_;
-    /**
-     * <code>.context.ConstraintActionEnum action = 1;</code>
-     * @return The enum numeric value on the wire for action.
-     */
-    @java.lang.Override public int getActionValue() {
-      return action_;
-    }
-    /**
-     * <code>.context.ConstraintActionEnum action = 1;</code>
-     * @return The action.
-     */
-    @java.lang.Override public context.ContextOuterClass.ConstraintActionEnum getAction() {
-      @SuppressWarnings("deprecation")
-      context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
-      return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceList_descriptor;
 
-    public static final int CUSTOM_FIELD_NUMBER = 2;
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     * @return Whether the custom field is set.
-     */
-    @java.lang.Override
-    public boolean hasCustom() {
-      return constraintCase_ == 2;
-    }
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     * @return The custom.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Custom getCustom() {
-      if (constraintCase_ == 2) {
-         return (context.ContextOuterClass.Constraint_Custom) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_Custom custom = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
-      if (constraintCase_ == 2) {
-         return (context.ContextOuterClass.Constraint_Custom) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceList_fieldAccessorTable;
 
-    public static final int SCHEDULE_FIELD_NUMBER = 3;
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     * @return Whether the schedule field is set.
-     */
-    @java.lang.Override
-    public boolean hasSchedule() {
-      return constraintCase_ == 3;
-    }
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     * @return The schedule.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Schedule getSchedule() {
-      if (constraintCase_ == 3) {
-         return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_Schedule schedule = 3;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
-      if (constraintCase_ == 3) {
-         return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceFilter_descriptor;
 
-    public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     * @return Whether the endpointLocation field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointLocation() {
-      return constraintCase_ == 4;
-    }
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     * @return The endpointLocation.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
-      if (constraintCase_ == 4) {
-         return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
-      if (constraintCase_ == 4) {
-         return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceFilter_fieldAccessorTable;
 
-    public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 5;
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     * @return Whether the endpointPriority field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointPriority() {
-      return constraintCase_ == 5;
-    }
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     * @return The endpointPriority.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
-      if (constraintCase_ == 5) {
-         return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
-      if (constraintCase_ == 5) {
-         return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceEvent_descriptor;
 
-    public static final int SLA_CAPACITY_FIELD_NUMBER = 6;
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     * @return Whether the slaCapacity field is set.
-     */
-    @java.lang.Override
-    public boolean hasSlaCapacity() {
-      return constraintCase_ == 6;
-    }
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     * @return The slaCapacity.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
-      if (constraintCase_ == 6) {
-         return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
-      if (constraintCase_ == 6) {
-         return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceEvent_fieldAccessorTable;
 
-    public static final int SLA_LATENCY_FIELD_NUMBER = 7;
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     * @return Whether the slaLatency field is set.
-     */
-    @java.lang.Override
-    public boolean hasSlaLatency() {
-      return constraintCase_ == 7;
-    }
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     * @return The slaLatency.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
-      if (constraintCase_ == 7) {
-         return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
-      if (constraintCase_ == 7) {
-         return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionId_descriptor;
 
-    public static final int SLA_AVAILABILITY_FIELD_NUMBER = 8;
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     * @return Whether the slaAvailability field is set.
-     */
-    @java.lang.Override
-    public boolean hasSlaAvailability() {
-      return constraintCase_ == 8;
-    }
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     * @return The slaAvailability.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
-      if (constraintCase_ == 8) {
-         return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
-      if (constraintCase_ == 8) {
-         return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionId_fieldAccessorTable;
 
-    public static final int SLA_ISOLATION_FIELD_NUMBER = 9;
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     * @return Whether the slaIsolation field is set.
-     */
-    @java.lang.Override
-    public boolean hasSlaIsolation() {
-      return constraintCase_ == 9;
-    }
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     * @return The slaIsolation.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
-      if (constraintCase_ == 9) {
-         return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
-      if (constraintCase_ == 9) {
-         return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L0_descriptor;
 
-    public static final int EXCLUSIONS_FIELD_NUMBER = 10;
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     * @return Whether the exclusions field is set.
-     */
-    @java.lang.Override
-    public boolean hasExclusions() {
-      return constraintCase_ == 10;
-    }
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     * @return The exclusions.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
-      if (constraintCase_ == 10) {
-         return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-    }
-    /**
-     * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
-      if (constraintCase_ == 10) {
-         return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-      }
-      return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L0_fieldAccessorTable;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L2_descriptor;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L2_fieldAccessorTable;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
-        output.writeEnum(1, action_);
-      }
-      if (constraintCase_ == 2) {
-        output.writeMessage(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
-      }
-      if (constraintCase_ == 3) {
-        output.writeMessage(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
-      }
-      if (constraintCase_ == 4) {
-        output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-      }
-      if (constraintCase_ == 5) {
-        output.writeMessage(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-      }
-      if (constraintCase_ == 6) {
-        output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-      }
-      if (constraintCase_ == 7) {
-        output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-      }
-      if (constraintCase_ == 8) {
-        output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-      }
-      if (constraintCase_ == 9) {
-        output.writeMessage(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
-      }
-      if (constraintCase_ == 10) {
-        output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L3_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(1, action_);
-      }
-      if (constraintCase_ == 2) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
-      }
-      if (constraintCase_ == 3) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
-      }
-      if (constraintCase_ == 4) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
-      }
-      if (constraintCase_ == 5) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
-      }
-      if (constraintCase_ == 6) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
-      }
-      if (constraintCase_ == 7) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
-      }
-      if (constraintCase_ == 8) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
-      }
-      if (constraintCase_ == 9) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
-      }
-      if (constraintCase_ == 10) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L3_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.Constraint)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;
-
-      if (action_ != other.action_) return false;
-      if (!getConstraintCase().equals(other.getConstraintCase())) return false;
-      switch (constraintCase_) {
-        case 2:
-          if (!getCustom()
-              .equals(other.getCustom())) return false;
-          break;
-        case 3:
-          if (!getSchedule()
-              .equals(other.getSchedule())) return false;
-          break;
-        case 4:
-          if (!getEndpointLocation()
-              .equals(other.getEndpointLocation())) return false;
-          break;
-        case 5:
-          if (!getEndpointPriority()
-              .equals(other.getEndpointPriority())) return false;
-          break;
-        case 6:
-          if (!getSlaCapacity()
-              .equals(other.getSlaCapacity())) return false;
-          break;
-        case 7:
-          if (!getSlaLatency()
-              .equals(other.getSlaLatency())) return false;
-          break;
-        case 8:
-          if (!getSlaAvailability()
-              .equals(other.getSlaAvailability())) return false;
-          break;
-        case 9:
-          if (!getSlaIsolation()
-              .equals(other.getSlaIsolation())) return false;
-          break;
-        case 10:
-          if (!getExclusions()
-              .equals(other.getExclusions())) return false;
-          break;
-        case 0:
-        default:
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L4_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + ACTION_FIELD_NUMBER;
-      hash = (53 * hash) + action_;
-      switch (constraintCase_) {
-        case 2:
-          hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
-          hash = (53 * hash) + getCustom().hashCode();
-          break;
-        case 3:
-          hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
-          hash = (53 * hash) + getSchedule().hashCode();
-          break;
-        case 4:
-          hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
-          hash = (53 * hash) + getEndpointLocation().hashCode();
-          break;
-        case 5:
-          hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
-          hash = (53 * hash) + getEndpointPriority().hashCode();
-          break;
-        case 6:
-          hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
-          hash = (53 * hash) + getSlaCapacity().hashCode();
-          break;
-        case 7:
-          hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
-          hash = (53 * hash) + getSlaLatency().hashCode();
-          break;
-        case 8:
-          hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
-          hash = (53 * hash) + getSlaAvailability().hashCode();
-          break;
-        case 9:
-          hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
-          hash = (53 * hash) + getSlaIsolation().hashCode();
-          break;
-        case 10:
-          hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
-          hash = (53 * hash) + getExclusions().hashCode();
-          break;
-        case 0:
-        default:
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L4_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.Constraint parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.Constraint}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.Constraint)
-        context.ContextOuterClass.ConstraintOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.Constraint.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        action_ = 0;
-
-        constraintCase_ = 0;
-        constraint_ = null;
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
-        return context.ContextOuterClass.Constraint.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint build() {
-        context.ContextOuterClass.Constraint result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint buildPartial() {
-        context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
-        result.action_ = action_;
-        if (constraintCase_ == 2) {
-          if (customBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = customBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 3) {
-          if (scheduleBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = scheduleBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 4) {
-          if (endpointLocationBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = endpointLocationBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 5) {
-          if (endpointPriorityBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = endpointPriorityBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 6) {
-          if (slaCapacityBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = slaCapacityBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 7) {
-          if (slaLatencyBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = slaLatencyBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 8) {
-          if (slaAvailabilityBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = slaAvailabilityBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 9) {
-          if (slaIsolationBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = slaIsolationBuilder_.build();
-          }
-        }
-        if (constraintCase_ == 10) {
-          if (exclusionsBuilder_ == null) {
-            result.constraint_ = constraint_;
-          } else {
-            result.constraint_ = exclusionsBuilder_.build();
-          }
-        }
-        result.constraintCase_ = constraintCase_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.Constraint) {
-          return mergeFrom((context.ContextOuterClass.Constraint)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
-        if (other == context.ContextOuterClass.Constraint.getDefaultInstance()) return this;
-        if (other.action_ != 0) {
-          setActionValue(other.getActionValue());
-        }
-        switch (other.getConstraintCase()) {
-          case CUSTOM: {
-            mergeCustom(other.getCustom());
-            break;
-          }
-          case SCHEDULE: {
-            mergeSchedule(other.getSchedule());
-            break;
-          }
-          case ENDPOINT_LOCATION: {
-            mergeEndpointLocation(other.getEndpointLocation());
-            break;
-          }
-          case ENDPOINT_PRIORITY: {
-            mergeEndpointPriority(other.getEndpointPriority());
-            break;
-          }
-          case SLA_CAPACITY: {
-            mergeSlaCapacity(other.getSlaCapacity());
-            break;
-          }
-          case SLA_LATENCY: {
-            mergeSlaLatency(other.getSlaLatency());
-            break;
-          }
-          case SLA_AVAILABILITY: {
-            mergeSlaAvailability(other.getSlaAvailability());
-            break;
-          }
-          case SLA_ISOLATION: {
-            mergeSlaIsolation(other.getSlaIsolation());
-            break;
-          }
-          case EXCLUSIONS: {
-            mergeExclusions(other.getExclusions());
-            break;
-          }
-          case CONSTRAINT_NOT_SET: {
-            break;
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.Constraint parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.Constraint) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int constraintCase_ = 0;
-      private java.lang.Object constraint_;
-      public ConstraintCase
-          getConstraintCase() {
-        return ConstraintCase.forNumber(
-            constraintCase_);
-      }
-
-      public Builder clearConstraint() {
-        constraintCase_ = 0;
-        constraint_ = null;
-        onChanged();
-        return this;
-      }
-
-
-      private int action_ = 0;
-      /**
-       * <code>.context.ConstraintActionEnum action = 1;</code>
-       * @return The enum numeric value on the wire for action.
-       */
-      @java.lang.Override public int getActionValue() {
-        return action_;
-      }
-      /**
-       * <code>.context.ConstraintActionEnum action = 1;</code>
-       * @param value The enum numeric value on the wire for action to set.
-       * @return This builder for chaining.
-       */
-      public Builder setActionValue(int value) {
-        
-        action_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ConstraintActionEnum action = 1;</code>
-       * @return The action.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.ConstraintActionEnum getAction() {
-        @SuppressWarnings("deprecation")
-        context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.valueOf(action_);
-        return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.context.ConstraintActionEnum action = 1;</code>
-       * @param value The action to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAction(context.ContextOuterClass.ConstraintActionEnum value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        action_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.context.ConstraintActionEnum action = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAction() {
-        
-        action_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> customBuilder_;
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       * @return Whether the custom field is set.
-       */
-      @java.lang.Override
-      public boolean hasCustom() {
-        return constraintCase_ == 2;
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       * @return The custom.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Custom getCustom() {
-        if (customBuilder_ == null) {
-          if (constraintCase_ == 2) {
-            return (context.ContextOuterClass.Constraint_Custom) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 2) {
-            return customBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
-        if (customBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          customBuilder_.setMessage(value);
-        }
-        constraintCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      public Builder setCustom(
-          context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
-        if (customBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          customBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
-        if (customBuilder_ == null) {
-          if (constraintCase_ == 2 &&
-              constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 2) {
-            customBuilder_.mergeFrom(value);
-          }
-          customBuilder_.setMessage(value);
-        }
-        constraintCase_ = 2;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      public Builder clearCustom() {
-        if (customBuilder_ == null) {
-          if (constraintCase_ == 2) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 2) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          customBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
-        return getCustomFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
-        if ((constraintCase_ == 2) && (customBuilder_ != null)) {
-          return customBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 2) {
-            return (context.ContextOuterClass.Constraint_Custom) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Custom custom = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> 
-          getCustomFieldBuilder() {
-        if (customBuilder_ == null) {
-          if (!(constraintCase_ == 2)) {
-            constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
-          }
-          customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder>(
-                  (context.ContextOuterClass.Constraint_Custom) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 2;
-        onChanged();;
-        return customBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> scheduleBuilder_;
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       * @return Whether the schedule field is set.
-       */
-      @java.lang.Override
-      public boolean hasSchedule() {
-        return constraintCase_ == 3;
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       * @return The schedule.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Schedule getSchedule() {
-        if (scheduleBuilder_ == null) {
-          if (constraintCase_ == 3) {
-            return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 3) {
-            return scheduleBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
-        if (scheduleBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          scheduleBuilder_.setMessage(value);
-        }
-        constraintCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      public Builder setSchedule(
-          context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
-        if (scheduleBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          scheduleBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
-        if (scheduleBuilder_ == null) {
-          if (constraintCase_ == 3 &&
-              constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 3) {
-            scheduleBuilder_.mergeFrom(value);
-          }
-          scheduleBuilder_.setMessage(value);
-        }
-        constraintCase_ = 3;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      public Builder clearSchedule() {
-        if (scheduleBuilder_ == null) {
-          if (constraintCase_ == 3) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 3) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          scheduleBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
-        return getScheduleFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
-        if ((constraintCase_ == 3) && (scheduleBuilder_ != null)) {
-          return scheduleBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 3) {
-            return (context.ContextOuterClass.Constraint_Schedule) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Schedule schedule = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> 
-          getScheduleFieldBuilder() {
-        if (scheduleBuilder_ == null) {
-          if (!(constraintCase_ == 3)) {
-            constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
-          }
-          scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder>(
-                  (context.ContextOuterClass.Constraint_Schedule) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 3;
-        onChanged();;
-        return scheduleBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> endpointLocationBuilder_;
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       * @return Whether the endpointLocation field is set.
-       */
-      @java.lang.Override
-      public boolean hasEndpointLocation() {
-        return constraintCase_ == 4;
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       * @return The endpointLocation.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          if (constraintCase_ == 4) {
-            return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 4) {
-            return endpointLocationBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
-        if (endpointLocationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          endpointLocationBuilder_.setMessage(value);
-        }
-        constraintCase_ = 4;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      public Builder setEndpointLocation(
-          context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
-        if (endpointLocationBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointLocationBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 4;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
-        if (endpointLocationBuilder_ == null) {
-          if (constraintCase_ == 4 &&
-              constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 4) {
-            endpointLocationBuilder_.mergeFrom(value);
-          }
-          endpointLocationBuilder_.setMessage(value);
-        }
-        constraintCase_ = 4;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      public Builder clearEndpointLocation() {
-        if (endpointLocationBuilder_ == null) {
-          if (constraintCase_ == 4) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 4) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          endpointLocationBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
-        return getEndpointLocationFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
-        if ((constraintCase_ == 4) && (endpointLocationBuilder_ != null)) {
-          return endpointLocationBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 4) {
-            return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> 
-          getEndpointLocationFieldBuilder() {
-        if (endpointLocationBuilder_ == null) {
-          if (!(constraintCase_ == 4)) {
-            constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
-          }
-          endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder>(
-                  (context.ContextOuterClass.Constraint_EndPointLocation) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 4;
-        onChanged();;
-        return endpointLocationBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> endpointPriorityBuilder_;
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       * @return Whether the endpointPriority field is set.
-       */
-      @java.lang.Override
-      public boolean hasEndpointPriority() {
-        return constraintCase_ == 5;
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       * @return The endpointPriority.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
-        if (endpointPriorityBuilder_ == null) {
-          if (constraintCase_ == 5) {
-            return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 5) {
-            return endpointPriorityBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
-        if (endpointPriorityBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          endpointPriorityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 5;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      public Builder setEndpointPriority(
-          context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
-        if (endpointPriorityBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointPriorityBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 5;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
-        if (endpointPriorityBuilder_ == null) {
-          if (constraintCase_ == 5 &&
-              constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 5) {
-            endpointPriorityBuilder_.mergeFrom(value);
-          }
-          endpointPriorityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 5;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      public Builder clearEndpointPriority() {
-        if (endpointPriorityBuilder_ == null) {
-          if (constraintCase_ == 5) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 5) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          endpointPriorityBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
-        return getEndpointPriorityFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
-        if ((constraintCase_ == 5) && (endpointPriorityBuilder_ != null)) {
-          return endpointPriorityBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 5) {
-            return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> 
-          getEndpointPriorityFieldBuilder() {
-        if (endpointPriorityBuilder_ == null) {
-          if (!(constraintCase_ == 5)) {
-            constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
-          }
-          endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder>(
-                  (context.ContextOuterClass.Constraint_EndPointPriority) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 5;
-        onChanged();;
-        return endpointPriorityBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> slaCapacityBuilder_;
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       * @return Whether the slaCapacity field is set.
-       */
-      @java.lang.Override
-      public boolean hasSlaCapacity() {
-        return constraintCase_ == 6;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       * @return The slaCapacity.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
-        if (slaCapacityBuilder_ == null) {
-          if (constraintCase_ == 6) {
-            return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 6) {
-            return slaCapacityBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
-        if (slaCapacityBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          slaCapacityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 6;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      public Builder setSlaCapacity(
-          context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
-        if (slaCapacityBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          slaCapacityBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 6;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
-        if (slaCapacityBuilder_ == null) {
-          if (constraintCase_ == 6 &&
-              constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 6) {
-            slaCapacityBuilder_.mergeFrom(value);
-          }
-          slaCapacityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 6;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      public Builder clearSlaCapacity() {
-        if (slaCapacityBuilder_ == null) {
-          if (constraintCase_ == 6) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 6) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          slaCapacityBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
-        return getSlaCapacityFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
-        if ((constraintCase_ == 6) && (slaCapacityBuilder_ != null)) {
-          return slaCapacityBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 6) {
-            return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> 
-          getSlaCapacityFieldBuilder() {
-        if (slaCapacityBuilder_ == null) {
-          if (!(constraintCase_ == 6)) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
-          }
-          slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder>(
-                  (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 6;
-        onChanged();;
-        return slaCapacityBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> slaLatencyBuilder_;
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       * @return Whether the slaLatency field is set.
-       */
-      @java.lang.Override
-      public boolean hasSlaLatency() {
-        return constraintCase_ == 7;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       * @return The slaLatency.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
-        if (slaLatencyBuilder_ == null) {
-          if (constraintCase_ == 7) {
-            return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 7) {
-            return slaLatencyBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
-        if (slaLatencyBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          slaLatencyBuilder_.setMessage(value);
-        }
-        constraintCase_ = 7;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      public Builder setSlaLatency(
-          context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) {
-        if (slaLatencyBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          slaLatencyBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 7;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
-        if (slaLatencyBuilder_ == null) {
-          if (constraintCase_ == 7 &&
-              constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 7) {
-            slaLatencyBuilder_.mergeFrom(value);
-          }
-          slaLatencyBuilder_.setMessage(value);
-        }
-        constraintCase_ = 7;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      public Builder clearSlaLatency() {
-        if (slaLatencyBuilder_ == null) {
-          if (constraintCase_ == 7) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 7) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          slaLatencyBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() {
-        return getSlaLatencyFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
-        if ((constraintCase_ == 7) && (slaLatencyBuilder_ != null)) {
-          return slaLatencyBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 7) {
-            return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> 
-          getSlaLatencyFieldBuilder() {
-        if (slaLatencyBuilder_ == null) {
-          if (!(constraintCase_ == 7)) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
-          }
-          slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder>(
-                  (context.ContextOuterClass.Constraint_SLA_Latency) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 7;
-        onChanged();;
-        return slaLatencyBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> slaAvailabilityBuilder_;
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       * @return Whether the slaAvailability field is set.
-       */
-      @java.lang.Override
-      public boolean hasSlaAvailability() {
-        return constraintCase_ == 8;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       * @return The slaAvailability.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
-        if (slaAvailabilityBuilder_ == null) {
-          if (constraintCase_ == 8) {
-            return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 8) {
-            return slaAvailabilityBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
-        if (slaAvailabilityBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          slaAvailabilityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 8;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      public Builder setSlaAvailability(
-          context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) {
-        if (slaAvailabilityBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          slaAvailabilityBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 8;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
-        if (slaAvailabilityBuilder_ == null) {
-          if (constraintCase_ == 8 &&
-              constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 8) {
-            slaAvailabilityBuilder_.mergeFrom(value);
-          }
-          slaAvailabilityBuilder_.setMessage(value);
-        }
-        constraintCase_ = 8;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      public Builder clearSlaAvailability() {
-        if (slaAvailabilityBuilder_ == null) {
-          if (constraintCase_ == 8) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 8) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          slaAvailabilityBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() {
-        return getSlaAvailabilityFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
-        if ((constraintCase_ == 8) && (slaAvailabilityBuilder_ != null)) {
-          return slaAvailabilityBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 8) {
-            return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> 
-          getSlaAvailabilityFieldBuilder() {
-        if (slaAvailabilityBuilder_ == null) {
-          if (!(constraintCase_ == 8)) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
-          }
-          slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder>(
-                  (context.ContextOuterClass.Constraint_SLA_Availability) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 8;
-        onChanged();;
-        return slaAvailabilityBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> slaIsolationBuilder_;
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       * @return Whether the slaIsolation field is set.
-       */
-      @java.lang.Override
-      public boolean hasSlaIsolation() {
-        return constraintCase_ == 9;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       * @return The slaIsolation.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
-        if (slaIsolationBuilder_ == null) {
-          if (constraintCase_ == 9) {
-            return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 9) {
-            return slaIsolationBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
-        if (slaIsolationBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          slaIsolationBuilder_.setMessage(value);
-        }
-        constraintCase_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      public Builder setSlaIsolation(
-          context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) {
-        if (slaIsolationBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          slaIsolationBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
-        if (slaIsolationBuilder_ == null) {
-          if (constraintCase_ == 9 &&
-              constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 9) {
-            slaIsolationBuilder_.mergeFrom(value);
-          }
-          slaIsolationBuilder_.setMessage(value);
-        }
-        constraintCase_ = 9;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      public Builder clearSlaIsolation() {
-        if (slaIsolationBuilder_ == null) {
-          if (constraintCase_ == 9) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 9) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          slaIsolationBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() {
-        return getSlaIsolationFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
-        if ((constraintCase_ == 9) && (slaIsolationBuilder_ != null)) {
-          return slaIsolationBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 9) {
-            return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> 
-          getSlaIsolationFieldBuilder() {
-        if (slaIsolationBuilder_ == null) {
-          if (!(constraintCase_ == 9)) {
-            constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
-          }
-          slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder>(
-                  (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 9;
-        onChanged();;
-        return slaIsolationBuilder_;
-      }
-
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> exclusionsBuilder_;
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       * @return Whether the exclusions field is set.
-       */
-      @java.lang.Override
-      public boolean hasExclusions() {
-        return constraintCase_ == 10;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       * @return The exclusions.
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 10) {
-            return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        } else {
-          if (constraintCase_ == 10) {
-            return exclusionsBuilder_.getMessage();
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
-        if (exclusionsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          constraint_ = value;
-          onChanged();
-        } else {
-          exclusionsBuilder_.setMessage(value);
-        }
-        constraintCase_ = 10;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      public Builder setExclusions(
-          context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) {
-        if (exclusionsBuilder_ == null) {
-          constraint_ = builderForValue.build();
-          onChanged();
-        } else {
-          exclusionsBuilder_.setMessage(builderForValue.build());
-        }
-        constraintCase_ = 10;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 10 &&
-              constraint_ != context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) {
-            constraint_ = context.ContextOuterClass.Constraint_Exclusions.newBuilder((context.ContextOuterClass.Constraint_Exclusions) constraint_)
-                .mergeFrom(value).buildPartial();
-          } else {
-            constraint_ = value;
-          }
-          onChanged();
-        } else {
-          if (constraintCase_ == 10) {
-            exclusionsBuilder_.mergeFrom(value);
-          }
-          exclusionsBuilder_.setMessage(value);
-        }
-        constraintCase_ = 10;
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      public Builder clearExclusions() {
-        if (exclusionsBuilder_ == null) {
-          if (constraintCase_ == 10) {
-            constraintCase_ = 0;
-            constraint_ = null;
-            onChanged();
-          }
-        } else {
-          if (constraintCase_ == 10) {
-            constraintCase_ = 0;
-            constraint_ = null;
-          }
-          exclusionsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() {
-        return getExclusionsFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      @java.lang.Override
-      public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
-        if ((constraintCase_ == 10) && (exclusionsBuilder_ != null)) {
-          return exclusionsBuilder_.getMessageOrBuilder();
-        } else {
-          if (constraintCase_ == 10) {
-            return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
-          }
-          return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-        }
-      }
-      /**
-       * <code>.context.Constraint_Exclusions exclusions = 10;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> 
-          getExclusionsFieldBuilder() {
-        if (exclusionsBuilder_ == null) {
-          if (!(constraintCase_ == 10)) {
-            constraint_ = context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
-          }
-          exclusionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder>(
-                  (context.ContextOuterClass.Constraint_Exclusions) constraint_,
-                  getParentForChildren(),
-                  isClean());
-          constraint_ = null;
-        }
-        constraintCase_ = 10;
-        onChanged();;
-        return exclusionsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.Constraint)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Connection_descriptor;
 
-    // @@protoc_insertion_point(class_scope:context.Constraint)
-    private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Connection_fieldAccessorTable;
 
-    public static context.ContextOuterClass.Constraint getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionIdList_descriptor;
 
-    private static final com.google.protobuf.Parser<Constraint>
-        PARSER = new com.google.protobuf.AbstractParser<Constraint>() {
-      @java.lang.Override
-      public Constraint parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Constraint(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Constraint> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionIdList_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Constraint> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionList_descriptor;
 
-    @java.lang.Override
-    public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionList_fieldAccessorTable;
 
-  }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionEvent_descriptor;
 
-  public interface TeraFlowControllerOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.TeraFlowController)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionEvent_fieldAccessorTable;
 
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointId_descriptor;
 
-    /**
-     * <code>string ip_address = 2;</code>
-     * @return The ipAddress.
-     */
-    java.lang.String getIpAddress();
-    /**
-     * <code>string ip_address = 2;</code>
-     * @return The bytes for ipAddress.
-     */
-    com.google.protobuf.ByteString
-        getIpAddressBytes();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointId_fieldAccessorTable;
 
-    /**
-     * <code>uint32 port = 3;</code>
-     * @return The port.
-     */
-    int getPort();
-  }
-  /**
-   * <pre>
-   * ----- Miscellaneous -------------------------------------------------------------------------------------------------
-   * </pre>
-   *
-   * Protobuf type {@code context.TeraFlowController}
-   */
-  public static final class TeraFlowController extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.TeraFlowController)
-      TeraFlowControllerOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use TeraFlowController.newBuilder() to construct.
-    private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private TeraFlowController() {
-      ipAddress_ = "";
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPoint_descriptor;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TeraFlowController();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPoint_fieldAccessorTable;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private TeraFlowController(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              ipAddress_ = s;
-              break;
-            }
-            case 24: {
-
-              port_ = input.readUInt32();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointName_descriptor;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointName_fieldAccessorTable;
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointIdList_descriptor;
 
-    public static final int IP_ADDRESS_FIELD_NUMBER = 2;
-    private volatile java.lang.Object ipAddress_;
-    /**
-     * <code>string ip_address = 2;</code>
-     * @return The ipAddress.
-     */
-    @java.lang.Override
-    public java.lang.String getIpAddress() {
-      java.lang.Object ref = ipAddress_;
-      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();
-        ipAddress_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string ip_address = 2;</code>
-     * @return The bytes for ipAddress.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getIpAddressBytes() {
-      java.lang.Object ref = ipAddress_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        ipAddress_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointIdList_fieldAccessorTable;
 
-    public static final int PORT_FIELD_NUMBER = 3;
-    private int port_;
-    /**
-     * <code>uint32 port = 3;</code>
-     * @return The port.
-     */
-    @java.lang.Override
-    public int getPort() {
-      return port_;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointNameList_descriptor;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointNameList_fieldAccessorTable;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_Custom_descriptor;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (!getIpAddressBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
-      }
-      if (port_ != 0) {
-        output.writeUInt32(3, port_);
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_Custom_fieldAccessorTable;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (!getIpAddressBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
-      }
-      if (port_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, port_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_ACL_descriptor;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (!getIpAddress()
-          .equals(other.getIpAddress())) return false;
-      if (getPort()
-          != other.getPort()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_ACL_fieldAccessorTable;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER;
-      hash = (53 * hash) + getIpAddress().hashCode();
-      hash = (37 * hash) + PORT_FIELD_NUMBER;
-      hash = (53 * hash) + getPort();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_descriptor;
 
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.TeraFlowController parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_fieldAccessorTable;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Custom_descriptor;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
-     * </pre>
-     *
-     * Protobuf type {@code context.TeraFlowController}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.TeraFlowController)
-        context.ContextOuterClass.TeraFlowControllerOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        ipAddress_ = "";
-
-        port_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
-        return context.ContextOuterClass.TeraFlowController.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TeraFlowController build() {
-        context.ContextOuterClass.TeraFlowController result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.TeraFlowController buildPartial() {
-        context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        result.ipAddress_ = ipAddress_;
-        result.port_ = port_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.TeraFlowController) {
-          return mergeFrom((context.ContextOuterClass.TeraFlowController)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) {
-        if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (!other.getIpAddress().isEmpty()) {
-          ipAddress_ = other.ipAddress_;
-          onChanged();
-        }
-        if (other.getPort() != 0) {
-          setPort(other.getPort());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.TeraFlowController parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.TeraFlowController) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private java.lang.Object ipAddress_ = "";
-      /**
-       * <code>string ip_address = 2;</code>
-       * @return The ipAddress.
-       */
-      public java.lang.String getIpAddress() {
-        java.lang.Object ref = ipAddress_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          ipAddress_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string ip_address = 2;</code>
-       * @return The bytes for ipAddress.
-       */
-      public com.google.protobuf.ByteString
-          getIpAddressBytes() {
-        java.lang.Object ref = ipAddress_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          ipAddress_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string ip_address = 2;</code>
-       * @param value The ipAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIpAddress(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        ipAddress_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string ip_address = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIpAddress() {
-        
-        ipAddress_ = getDefaultInstance().getIpAddress();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string ip_address = 2;</code>
-       * @param value The bytes for ipAddress to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIpAddressBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        ipAddress_ = value;
-        onChanged();
-        return this;
-      }
-
-      private int port_ ;
-      /**
-       * <code>uint32 port = 3;</code>
-       * @return The port.
-       */
-      @java.lang.Override
-      public int getPort() {
-        return port_;
-      }
-      /**
-       * <code>uint32 port = 3;</code>
-       * @param value The port to set.
-       * @return This builder for chaining.
-       */
-      public Builder setPort(int value) {
-        
-        port_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 port = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearPort() {
-        
-        port_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.TeraFlowController)
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Custom_fieldAccessorTable;
 
-    // @@protoc_insertion_point(class_scope:context.TeraFlowController)
-    private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Schedule_descriptor;
 
-    public static context.ContextOuterClass.TeraFlowController getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Schedule_fieldAccessorTable;
 
-    private static final com.google.protobuf.Parser<TeraFlowController>
-        PARSER = new com.google.protobuf.AbstractParser<TeraFlowController>() {
-      @java.lang.Override
-      public TeraFlowController parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TeraFlowController(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<TeraFlowController> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_GPS_Position_descriptor;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<TeraFlowController> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_GPS_Position_fieldAccessorTable;
 
-    @java.lang.Override
-    public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Location_descriptor;
 
-  }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Location_fieldAccessorTable;
 
-  public interface AuthenticationResultOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:context.AuthenticationResult)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_EndPointLocation_descriptor;
 
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    boolean hasContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    context.ContextOuterClass.ContextId getContextId();
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_EndPointLocation_fieldAccessorTable;
 
-    /**
-     * <code>bool authenticated = 2;</code>
-     * @return The authenticated.
-     */
-    boolean getAuthenticated();
-  }
-  /**
-   * Protobuf type {@code context.AuthenticationResult}
-   */
-  public static final class AuthenticationResult extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:context.AuthenticationResult)
-      AuthenticationResultOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AuthenticationResult.newBuilder() to construct.
-    private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AuthenticationResult() {
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_EndPointPriority_descriptor;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AuthenticationResult();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_EndPointPriority_fieldAccessorTable;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AuthenticationResult(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.ContextId.Builder subBuilder = null;
-              if (contextId_ != null) {
-                subBuilder = contextId_.toBuilder();
-              }
-              contextId_ = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(contextId_);
-                contextId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-
-              authenticated_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Latency_descriptor;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Latency_fieldAccessorTable;
 
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.ContextId contextId_;
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return Whether the contextId field is set.
-     */
-    @java.lang.Override
-    public boolean hasContextId() {
-      return contextId_ != null;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     * @return The contextId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextId getContextId() {
-      return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-    }
-    /**
-     * <code>.context.ContextId context_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-      return getContextId();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Capacity_descriptor;
 
-    public static final int AUTHENTICATED_FIELD_NUMBER = 2;
-    private boolean authenticated_;
-    /**
-     * <code>bool authenticated = 2;</code>
-     * @return The authenticated.
-     */
-    @java.lang.Override
-    public boolean getAuthenticated() {
-      return authenticated_;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Availability_descriptor;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Availability_fieldAccessorTable;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (contextId_ != null) {
-        output.writeMessage(1, getContextId());
-      }
-      if (authenticated_ != false) {
-        output.writeBool(2, authenticated_);
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Isolation_level_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (contextId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getContextId());
-      }
-      if (authenticated_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(2, authenticated_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
-        return super.equals(obj);
-      }
-      context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
-
-      if (hasContextId() != other.hasContextId()) return false;
-      if (hasContextId()) {
-        if (!getContextId()
-            .equals(other.getContextId())) return false;
-      }
-      if (getAuthenticated()
-          != other.getAuthenticated()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Exclusions_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasContextId()) {
-        hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getContextId().hashCode();
-      }
-      hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getAuthenticated());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Exclusions_fieldAccessorTable;
 
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static context.ContextOuterClass.AuthenticationResult parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code context.AuthenticationResult}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
-        context.ContextOuterClass.AuthenticationResultOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
-      }
-
-      // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-        authenticated_ = false;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
-        return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.AuthenticationResult build() {
-        context.ContextOuterClass.AuthenticationResult result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public context.ContextOuterClass.AuthenticationResult buildPartial() {
-        context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
-        if (contextIdBuilder_ == null) {
-          result.contextId_ = contextId_;
-        } else {
-          result.contextId_ = contextIdBuilder_.build();
-        }
-        result.authenticated_ = authenticated_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof context.ContextOuterClass.AuthenticationResult) {
-          return mergeFrom((context.ContextOuterClass.AuthenticationResult)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
-        if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          mergeContextId(other.getContextId());
-        }
-        if (other.getAuthenticated() != false) {
-          setAuthenticated(other.getAuthenticated());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        context.ContextOuterClass.AuthenticationResult parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (context.ContextOuterClass.AuthenticationResult) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.ContextId contextId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return Whether the contextId field is set.
-       */
-      public boolean hasContextId() {
-        return contextIdBuilder_ != null || contextId_ != null;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       * @return The contextId.
-       */
-      public context.ContextOuterClass.ContextId getContextId() {
-        if (contextIdBuilder_ == null) {
-          return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        } else {
-          return contextIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          contextId_ = value;
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder setContextId(
-          context.ContextOuterClass.ContextId.Builder builderForValue) {
-        if (contextIdBuilder_ == null) {
-          contextId_ = builderForValue.build();
-          onChanged();
-        } else {
-          contextIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
-        if (contextIdBuilder_ == null) {
-          if (contextId_ != null) {
-            contextId_ =
-              context.ContextOuterClass.ContextId.newBuilder(contextId_).mergeFrom(value).buildPartial();
-          } else {
-            contextId_ = value;
-          }
-          onChanged();
-        } else {
-          contextIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public Builder clearContextId() {
-        if (contextIdBuilder_ == null) {
-          contextId_ = null;
-          onChanged();
-        } else {
-          contextId_ = null;
-          contextIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
-        
-        onChanged();
-        return getContextIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
-        if (contextIdBuilder_ != null) {
-          return contextIdBuilder_.getMessageOrBuilder();
-        } else {
-          return contextId_ == null ?
-              context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
-        }
-      }
-      /**
-       * <code>.context.ContextId context_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> 
-          getContextIdFieldBuilder() {
-        if (contextIdBuilder_ == null) {
-          contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(
-                  getContextId(),
-                  getParentForChildren(),
-                  isClean());
-          contextId_ = null;
-        }
-        return contextIdBuilder_;
-      }
-
-      private boolean authenticated_ ;
-      /**
-       * <code>bool authenticated = 2;</code>
-       * @return The authenticated.
-       */
-      @java.lang.Override
-      public boolean getAuthenticated() {
-        return authenticated_;
-      }
-      /**
-       * <code>bool authenticated = 2;</code>
-       * @param value The authenticated to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAuthenticated(boolean value) {
-        
-        authenticated_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool authenticated = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAuthenticated() {
-        
-        authenticated_ = false;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TeraFlowController_descriptor;
 
-    // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
-    private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TeraFlowController_fieldAccessorTable;
 
-    public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_AuthenticationResult_descriptor;
 
-    private static final com.google.protobuf.Parser<AuthenticationResult>
-        PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {
-      @java.lang.Override
-      public AuthenticationResult parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AuthenticationResult(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AuthenticationResult> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_AuthenticationResult_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
-      return PARSER;
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-    @java.lang.Override
-    public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Empty_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Empty_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Uuid_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Uuid_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Timestamp_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Timestamp_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Event_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Event_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ContextId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ContextId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Context_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Context_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ContextIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ContextIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ContextList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ContextList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ContextEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ContextEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TopologyId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TopologyId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Topology_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Topology_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TopologyDetails_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TopologyDetails_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TopologyIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TopologyIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TopologyList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TopologyList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TopologyEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TopologyEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Device_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Device_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Component_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Component_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Component_AttributesEntry_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Component_AttributesEntry_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceConfig_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceConfig_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceFilter_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceFilter_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_DeviceEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_DeviceEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_LinkId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_LinkId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_LinkAttributes_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_LinkAttributes_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Link_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Link_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_LinkIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_LinkIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_LinkList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_LinkList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_LinkEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_LinkEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Service_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Service_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceStatus_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceStatus_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceConfig_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceConfig_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceFilter_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceFilter_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ServiceEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ServiceEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Slice_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Slice_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceOwner_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceOwner_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceStatus_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceStatus_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceConfig_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceConfig_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceFilter_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceFilter_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_SliceEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_SliceEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionSettings_L0_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionSettings_L0_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionSettings_L2_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionSettings_L2_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionSettings_L3_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionSettings_L3_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionSettings_L4_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionSettings_L4_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionSettings_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionSettings_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Connection_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Connection_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConnectionEvent_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConnectionEvent_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_EndPointId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_EndPointId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_EndPoint_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_EndPoint_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_EndPointName_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_EndPointName_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_EndPointIdList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_EndPointIdList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_EndPointNameList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_EndPointNameList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConfigRule_Custom_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConfigRule_Custom_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConfigRule_ACL_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConfigRule_ACL_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_ConfigRule_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_ConfigRule_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_Custom_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_Custom_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_Schedule_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_Schedule_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_GPS_Position_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_GPS_Position_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Location_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Location_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_EndPointLocation_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_EndPointLocation_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_EndPointPriority_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_EndPointPriority_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_SLA_Latency_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_SLA_Latency_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_SLA_Capacity_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_SLA_Availability_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_SLA_Availability_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_SLA_Isolation_level_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_Exclusions_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_Exclusions_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_Constraint_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_Constraint_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_TeraFlowController_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_TeraFlowController_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_context_AuthenticationResult_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_context_AuthenticationResult_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\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" +
-      "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" +
-      "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" +
-      "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" +
-      ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" +
-      ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" +
-      "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" +
-      "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" +
-      "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" +
-      "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" +
-      "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" +
-      "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" +
-      "t.TeraFlowController\"8\n\rContextIdList\022\'\n" +
-      "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" +
-      "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" +
-      "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" +
-      "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" +
-      "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" +
-      "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" +
-      "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" +
-      "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" +
-      "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." +
-      "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" +
-      "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" +
-      "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" +
-      "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" +
-      "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" +
-      "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" +
-      "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" +
-      "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" +
-      "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" +
-      "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" +
-      "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" +
-      ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" +
-      "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" +
-      "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" +
-      "xt.DeviceConfig\022G\n\031device_operational_st" +
-      "atus\030\005 \001(\0162$.context.DeviceOperationalSt" +
-      "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" +
-      "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" +
-      "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" +
-      " \003(\0132\022.context.Component\022(\n\rcontroller_i" +
-      "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" +
-      "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" +
-      "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" +
-      "s\030\004 \003(\0132\".context.Component.AttributesEn" +
-      "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" +
-      "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" +
-      "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" +
-      "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" +
-      "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " +
-      "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" +
-      "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." +
-      "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" +
-      "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" +
-      "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" +
-      "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " +
-      "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" +
-      "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " +
-      "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" +
-      "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" +
-      "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" +
-      "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" +
-      " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" +
-      "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" +
-      "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" +
-      "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" +
-      "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" +
-      "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" +
-      "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" +
-      "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" +
-      "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" +
-      "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" +
-      "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" +
-      " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" +
-      "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" +
-      "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" +
-      ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" +
-      "ntext.ServiceStatus\022.\n\016service_config\030\007 " +
-      "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" +
-      "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" +
-      "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" +
-      "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" +
-      "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" +
-      "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" +
-      "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" +
-      "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" +
-      "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" +
-      "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" +
-      "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" +
-      "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" +
-      "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " +
-      "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" +
-      "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" +
-      "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" +
-      "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" +
-      "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." +
-      "context.EndPointId\022.\n\021slice_constraints\030" +
-      "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" +
-      "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" +
-      "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" +
-      "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" +
-      "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" +
-      "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" +
-      "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" +
-      "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" +
-      "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" +
-      "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" +
-      "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" +
-      "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" +
-      "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" +
-      "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" +
-      "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" +
-      "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" +
-      "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" +
-      "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" +
-      "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" +
-      "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" +
-      "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" +
-      "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" +
-      "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" +
-      "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" +
-      "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" +
-      "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" +
-      "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" +
-      " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" +
-      "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" +
-      "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" +
-      "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" +
-      "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" +
-      "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" +
-      "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" +
-      "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" +
-      "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" +
-      "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" +
-      "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" +
-      ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" +
-      "\rconnection_id\030\001 \001(\0132\025.context.Connectio" +
-      "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" +
-      "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" +
-      "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" +
-      "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" +
-      "\033.context.ConnectionSettings\"A\n\020Connecti" +
-      "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" +
-      "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" +
-      "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" +
-      "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." +
-      "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" +
-      "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" +
-      "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" +
-      "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" +
-      "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" +
-      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
-      "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" +
-      "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" +
-      "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" +
-      "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" +
-      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
-      "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " +
-      "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" +
-      "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" +
-      "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" +
-      "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" +
-      "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" +
-      "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" +
-      "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" +
-      "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" +
-      "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" +
-      "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" +
-      ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" +
-      "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" +
-      "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" +
-      "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" +
-      "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" +
-      "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" +
-      "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" +
-      "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " +
-      "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" +
-      "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" +
-      "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" +
-      "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" +
-      "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" +
-      "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" +
-      "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" +
-      "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" +
-      "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" +
-      "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" +
-      "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" +
-      "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" +
-      "isolation_level\030\001 \003(\0162\033.context.Isolatio" +
-      "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" +
-      "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" +
-      ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" +
-      "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" +
-      ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" +
-      "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" +
-      "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" +
-      "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" +
-      "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" +
-      "2$.context.Constraint_EndPointLocationH\000" +
-      "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" +
-      "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" +
-      "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" +
-      "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" +
-      "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" +
-      "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" +
-      "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" +
-      ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" +
-      "lusions\030\n \001(\0132\036.context.Constraint_Exclu" +
-      "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" +
-      "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" +
-      "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" +
-      "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" +
-      "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" +
-      " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" +
-      "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" +
-      "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\321\002\n\020Dev" +
-      "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" +
-      "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" +
-      "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" +
-      "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" +
-      "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" +
-      "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" +
-      "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\032\n\026" +
-      "DEVICEDRIVER_FLEXSCALE\020\t\022\032\n\026DEVICEDRIVER" +
-      "_IETF_ACTN\020\n*\217\001\n\033DeviceOperationalStatus" +
-      "Enum\022%\n!DEVICEOPERATIONALSTATUS_UNDEFINE" +
-      "D\020\000\022$\n DEVICEOPERATIONALSTATUS_DISABLED\020" +
-      "\001\022#\n\037DEVICEOPERATIONALSTATUS_ENABLED\020\002*\252" +
-      "\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE_UNKNOW" +
-      "N\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE" +
-      "_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY" +
-      "_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n\017SERVIC" +
-      "ETYPE_E2E\020\005*\304\001\n\021ServiceStatusEnum\022\033\n\027SER" +
-      "VICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_" +
-      "PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026S" +
-      "ERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS" +
-      "_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_" +
-      "VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICES" +
-      "TATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED" +
-      "\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_" +
-      "ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLIC" +
-      "ESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEn" +
-      "um\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIG" +
-      "ACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n" +
-      "\024ConstraintActionEnum\022\036\n\032CONSTRAINTACTIO" +
-      "N_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022" +
-      "\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolati" +
-      "onLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICA" +
-      "L_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021" +
-      "PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_I" +
-      "SOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION" +
-      "\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NE" +
-      "TWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_I" +
-      "SOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListCon" +
-      "textIds\022\016.context.Empty\032\026.context.Contex" +
-      "tIdList\"\000\0226\n\014ListContexts\022\016.context.Empt" +
-      "y\032\024.context.ContextList\"\000\0224\n\nGetContext\022" +
-      "\022.context.ContextId\032\020.context.Context\"\000\022" +
-      "4\n\nSetContext\022\020.context.Context\032\022.contex" +
-      "t.ContextId\"\000\0225\n\rRemoveContext\022\022.context" +
-      ".ContextId\032\016.context.Empty\"\000\022=\n\020GetConte" +
-      "xtEvents\022\016.context.Empty\032\025.context.Conte" +
-      "xtEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context" +
-      ".ContextId\032\027.context.TopologyIdList\"\000\022=\n" +
-      "\016ListTopologies\022\022.context.ContextId\032\025.co" +
-      "ntext.TopologyList\"\000\0227\n\013GetTopology\022\023.co" +
-      "ntext.TopologyId\032\021.context.Topology\"\000\022E\n" +
-      "\022GetTopologyDetails\022\023.context.TopologyId" +
-      "\032\030.context.TopologyDetails\"\000\0227\n\013SetTopol" +
-      "ogy\022\021.context.Topology\032\023.context.Topolog" +
-      "yId\"\000\0227\n\016RemoveTopology\022\023.context.Topolo" +
-      "gyId\032\016.context.Empty\"\000\022?\n\021GetTopologyEve" +
-      "nts\022\016.context.Empty\032\026.context.TopologyEv" +
-      "ent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty" +
-      "\032\025.context.DeviceIdList\"\000\0224\n\013ListDevices" +
-      "\022\016.context.Empty\032\023.context.DeviceList\"\000\022" +
-      "1\n\tGetDevice\022\021.context.DeviceId\032\017.contex" +
-      "t.Device\"\000\0221\n\tSetDevice\022\017.context.Device" +
-      "\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021." +
-      "context.DeviceId\032\016.context.Empty\"\000\022;\n\017Ge" +
-      "tDeviceEvents\022\016.context.Empty\032\024.context." +
-      "DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.contex" +
-      "t.DeviceFilter\032\023.context.DeviceList\"\000\022I\n" +
-      "\021ListEndPointNames\022\027.context.EndPointIdL" +
-      "ist\032\031.context.EndPointNameList\"\000\0224\n\013List" +
-      "LinkIds\022\016.context.Empty\032\023.context.LinkId" +
-      "List\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.co" +
-      "ntext.LinkList\"\000\022+\n\007GetLink\022\017.context.Li" +
-      "nkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.conte" +
-      "xt.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink" +
-      "\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rG" +
-      "etLinkEvents\022\016.context.Empty\032\022.context.L" +
-      "inkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context" +
-      ".ContextId\032\026.context.ServiceIdList\"\000\022:\n\014" +
-      "ListServices\022\022.context.ContextId\032\024.conte" +
-      "xt.ServiceList\"\000\0224\n\nGetService\022\022.context" +
-      ".ServiceId\032\020.context.Service\"\000\0224\n\nSetSer" +
-      "vice\022\020.context.Service\032\022.context.Service" +
-      "Id\"\000\0226\n\014UnsetService\022\020.context.Service\032\022" +
-      ".context.ServiceId\"\000\0225\n\rRemoveService\022\022." +
-      "context.ServiceId\032\016.context.Empty\"\000\022=\n\020G" +
-      "etServiceEvents\022\016.context.Empty\032\025.contex" +
-      "t.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.co" +
-      "ntext.ServiceFilter\032\024.context.ServiceLis" +
-      "t\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032" +
-      "\024.context.SliceIdList\"\000\0226\n\nListSlices\022\022." +
-      "context.ContextId\032\022.context.SliceList\"\000\022" +
-      ".\n\010GetSlice\022\020.context.SliceId\032\016.context." +
-      "Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.co" +
-      "ntext.SliceId\"\000\0220\n\nUnsetSlice\022\016.context." +
-      "Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice" +
-      "\022\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016" +
-      "GetSliceEvents\022\016.context.Empty\032\023.context" +
-      ".SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context" +
-      ".SliceFilter\032\022.context.SliceList\"\000\022D\n\021Li" +
-      "stConnectionIds\022\022.context.ServiceId\032\031.co" +
-      "ntext.ConnectionIdList\"\000\022@\n\017ListConnecti" +
-      "ons\022\022.context.ServiceId\032\027.context.Connec" +
-      "tionList\"\000\022=\n\rGetConnection\022\025.context.Co" +
-      "nnectionId\032\023.context.Connection\"\000\022=\n\rSet" +
-      "Connection\022\023.context.Connection\032\025.contex" +
-      "t.ConnectionId\"\000\022;\n\020RemoveConnection\022\025.c" +
-      "ontext.ConnectionId\032\016.context.Empty\"\000\022C\n" +
-      "\023GetConnectionEvents\022\016.context.Empty\032\030.c" +
-      "ontext.ConnectionEvent\"\0000\001b\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          acl.Acl.getDescriptor(),
-          kpi_sample_types.KpiSampleTypes.getDescriptor(),
-        });
-    internal_static_context_Empty_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_context_Empty_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Empty_descriptor,
-        new java.lang.String[] { });
-    internal_static_context_Uuid_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_context_Uuid_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Uuid_descriptor,
-        new java.lang.String[] { "Uuid", });
-    internal_static_context_Timestamp_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_context_Timestamp_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Timestamp_descriptor,
-        new java.lang.String[] { "Timestamp", });
-    internal_static_context_Event_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_context_Event_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Event_descriptor,
-        new java.lang.String[] { "Timestamp", "EventType", });
-    internal_static_context_ContextId_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_context_ContextId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ContextId_descriptor,
-        new java.lang.String[] { "ContextUuid", });
-    internal_static_context_Context_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_context_Context_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Context_descriptor,
-        new java.lang.String[] { "ContextId", "Name", "TopologyIds", "ServiceIds", "SliceIds", "Controller", });
-    internal_static_context_ContextIdList_descriptor =
-      getDescriptor().getMessageTypes().get(6);
-    internal_static_context_ContextIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ContextIdList_descriptor,
-        new java.lang.String[] { "ContextIds", });
-    internal_static_context_ContextList_descriptor =
-      getDescriptor().getMessageTypes().get(7);
-    internal_static_context_ContextList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ContextList_descriptor,
-        new java.lang.String[] { "Contexts", });
-    internal_static_context_ContextEvent_descriptor =
-      getDescriptor().getMessageTypes().get(8);
-    internal_static_context_ContextEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ContextEvent_descriptor,
-        new java.lang.String[] { "Event", "ContextId", });
-    internal_static_context_TopologyId_descriptor =
-      getDescriptor().getMessageTypes().get(9);
-    internal_static_context_TopologyId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TopologyId_descriptor,
-        new java.lang.String[] { "ContextId", "TopologyUuid", });
-    internal_static_context_Topology_descriptor =
-      getDescriptor().getMessageTypes().get(10);
-    internal_static_context_Topology_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Topology_descriptor,
-        new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", });
-    internal_static_context_TopologyDetails_descriptor =
-      getDescriptor().getMessageTypes().get(11);
-    internal_static_context_TopologyDetails_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TopologyDetails_descriptor,
-        new java.lang.String[] { "TopologyId", "Name", "Devices", "Links", });
-    internal_static_context_TopologyIdList_descriptor =
-      getDescriptor().getMessageTypes().get(12);
-    internal_static_context_TopologyIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TopologyIdList_descriptor,
-        new java.lang.String[] { "TopologyIds", });
-    internal_static_context_TopologyList_descriptor =
-      getDescriptor().getMessageTypes().get(13);
-    internal_static_context_TopologyList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TopologyList_descriptor,
-        new java.lang.String[] { "Topologies", });
-    internal_static_context_TopologyEvent_descriptor =
-      getDescriptor().getMessageTypes().get(14);
-    internal_static_context_TopologyEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TopologyEvent_descriptor,
-        new java.lang.String[] { "Event", "TopologyId", });
-    internal_static_context_DeviceId_descriptor =
-      getDescriptor().getMessageTypes().get(15);
-    internal_static_context_DeviceId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceId_descriptor,
-        new java.lang.String[] { "DeviceUuid", });
-    internal_static_context_Device_descriptor =
-      getDescriptor().getMessageTypes().get(16);
-    internal_static_context_Device_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Device_descriptor,
-        new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Components", "ControllerId", });
-    internal_static_context_Component_descriptor =
-      getDescriptor().getMessageTypes().get(17);
-    internal_static_context_Component_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Component_descriptor,
-        new java.lang.String[] { "ComponentUuid", "Name", "Type", "Attributes", "Parent", });
-    internal_static_context_Component_AttributesEntry_descriptor =
-      internal_static_context_Component_descriptor.getNestedTypes().get(0);
-    internal_static_context_Component_AttributesEntry_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Component_AttributesEntry_descriptor,
-        new java.lang.String[] { "Key", "Value", });
-    internal_static_context_DeviceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(18);
-    internal_static_context_DeviceConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceConfig_descriptor,
-        new java.lang.String[] { "ConfigRules", });
-    internal_static_context_DeviceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(19);
-    internal_static_context_DeviceIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceIdList_descriptor,
-        new java.lang.String[] { "DeviceIds", });
-    internal_static_context_DeviceList_descriptor =
-      getDescriptor().getMessageTypes().get(20);
-    internal_static_context_DeviceList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceList_descriptor,
-        new java.lang.String[] { "Devices", });
-    internal_static_context_DeviceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(21);
-    internal_static_context_DeviceFilter_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceFilter_descriptor,
-        new java.lang.String[] { "DeviceIds", "IncludeEndpoints", "IncludeConfigRules", "IncludeComponents", });
-    internal_static_context_DeviceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(22);
-    internal_static_context_DeviceEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_DeviceEvent_descriptor,
-        new java.lang.String[] { "Event", "DeviceId", "DeviceConfig", });
-    internal_static_context_LinkId_descriptor =
-      getDescriptor().getMessageTypes().get(23);
-    internal_static_context_LinkId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_LinkId_descriptor,
-        new java.lang.String[] { "LinkUuid", });
-    internal_static_context_LinkAttributes_descriptor =
-      getDescriptor().getMessageTypes().get(24);
-    internal_static_context_LinkAttributes_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_LinkAttributes_descriptor,
-        new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps", });
-    internal_static_context_Link_descriptor =
-      getDescriptor().getMessageTypes().get(25);
-    internal_static_context_Link_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Link_descriptor,
-        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes", });
-    internal_static_context_LinkIdList_descriptor =
-      getDescriptor().getMessageTypes().get(26);
-    internal_static_context_LinkIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_LinkIdList_descriptor,
-        new java.lang.String[] { "LinkIds", });
-    internal_static_context_LinkList_descriptor =
-      getDescriptor().getMessageTypes().get(27);
-    internal_static_context_LinkList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_LinkList_descriptor,
-        new java.lang.String[] { "Links", });
-    internal_static_context_LinkEvent_descriptor =
-      getDescriptor().getMessageTypes().get(28);
-    internal_static_context_LinkEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_LinkEvent_descriptor,
-        new java.lang.String[] { "Event", "LinkId", });
-    internal_static_context_ServiceId_descriptor =
-      getDescriptor().getMessageTypes().get(29);
-    internal_static_context_ServiceId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceId_descriptor,
-        new java.lang.String[] { "ContextId", "ServiceUuid", });
-    internal_static_context_Service_descriptor =
-      getDescriptor().getMessageTypes().get(30);
-    internal_static_context_Service_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Service_descriptor,
-        new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp", });
-    internal_static_context_ServiceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(31);
-    internal_static_context_ServiceStatus_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceStatus_descriptor,
-        new java.lang.String[] { "ServiceStatus", });
-    internal_static_context_ServiceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(32);
-    internal_static_context_ServiceConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceConfig_descriptor,
-        new java.lang.String[] { "ConfigRules", });
-    internal_static_context_ServiceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(33);
-    internal_static_context_ServiceIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceIdList_descriptor,
-        new java.lang.String[] { "ServiceIds", });
-    internal_static_context_ServiceList_descriptor =
-      getDescriptor().getMessageTypes().get(34);
-    internal_static_context_ServiceList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceList_descriptor,
-        new java.lang.String[] { "Services", });
-    internal_static_context_ServiceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(35);
-    internal_static_context_ServiceFilter_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceFilter_descriptor,
-        new java.lang.String[] { "ServiceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeConfigRules", });
-    internal_static_context_ServiceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(36);
-    internal_static_context_ServiceEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ServiceEvent_descriptor,
-        new java.lang.String[] { "Event", "ServiceId", });
-    internal_static_context_SliceId_descriptor =
-      getDescriptor().getMessageTypes().get(37);
-    internal_static_context_SliceId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceId_descriptor,
-        new java.lang.String[] { "ContextId", "SliceUuid", });
-    internal_static_context_Slice_descriptor =
-      getDescriptor().getMessageTypes().get(38);
-    internal_static_context_Slice_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Slice_descriptor,
-        new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp", });
-    internal_static_context_SliceOwner_descriptor =
-      getDescriptor().getMessageTypes().get(39);
-    internal_static_context_SliceOwner_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceOwner_descriptor,
-        new java.lang.String[] { "OwnerUuid", "OwnerString", });
-    internal_static_context_SliceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(40);
-    internal_static_context_SliceStatus_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceStatus_descriptor,
-        new java.lang.String[] { "SliceStatus", });
-    internal_static_context_SliceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(41);
-    internal_static_context_SliceConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceConfig_descriptor,
-        new java.lang.String[] { "ConfigRules", });
-    internal_static_context_SliceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(42);
-    internal_static_context_SliceIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceIdList_descriptor,
-        new java.lang.String[] { "SliceIds", });
-    internal_static_context_SliceList_descriptor =
-      getDescriptor().getMessageTypes().get(43);
-    internal_static_context_SliceList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceList_descriptor,
-        new java.lang.String[] { "Slices", });
-    internal_static_context_SliceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(44);
-    internal_static_context_SliceFilter_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceFilter_descriptor,
-        new java.lang.String[] { "SliceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeServiceIds", "IncludeSubsliceIds", "IncludeConfigRules", });
-    internal_static_context_SliceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(45);
-    internal_static_context_SliceEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_SliceEvent_descriptor,
-        new java.lang.String[] { "Event", "SliceId", });
-    internal_static_context_ConnectionId_descriptor =
-      getDescriptor().getMessageTypes().get(46);
-    internal_static_context_ConnectionId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionId_descriptor,
-        new java.lang.String[] { "ConnectionUuid", });
-    internal_static_context_ConnectionSettings_L0_descriptor =
-      getDescriptor().getMessageTypes().get(47);
-    internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionSettings_L0_descriptor,
-        new java.lang.String[] { "LspSymbolicName", });
-    internal_static_context_ConnectionSettings_L2_descriptor =
-      getDescriptor().getMessageTypes().get(48);
-    internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionSettings_L2_descriptor,
-        new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass", });
-    internal_static_context_ConnectionSettings_L3_descriptor =
-      getDescriptor().getMessageTypes().get(49);
-    internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionSettings_L3_descriptor,
-        new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl", });
-    internal_static_context_ConnectionSettings_L4_descriptor =
-      getDescriptor().getMessageTypes().get(50);
-    internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionSettings_L4_descriptor,
-        new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl", });
-    internal_static_context_ConnectionSettings_descriptor =
-      getDescriptor().getMessageTypes().get(51);
-    internal_static_context_ConnectionSettings_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionSettings_descriptor,
-        new java.lang.String[] { "L0", "L2", "L3", "L4", });
-    internal_static_context_Connection_descriptor =
-      getDescriptor().getMessageTypes().get(52);
-    internal_static_context_Connection_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Connection_descriptor,
-        new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings", });
-    internal_static_context_ConnectionIdList_descriptor =
-      getDescriptor().getMessageTypes().get(53);
-    internal_static_context_ConnectionIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionIdList_descriptor,
-        new java.lang.String[] { "ConnectionIds", });
-    internal_static_context_ConnectionList_descriptor =
-      getDescriptor().getMessageTypes().get(54);
-    internal_static_context_ConnectionList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionList_descriptor,
-        new java.lang.String[] { "Connections", });
-    internal_static_context_ConnectionEvent_descriptor =
-      getDescriptor().getMessageTypes().get(55);
-    internal_static_context_ConnectionEvent_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConnectionEvent_descriptor,
-        new java.lang.String[] { "Event", "ConnectionId", });
-    internal_static_context_EndPointId_descriptor =
-      getDescriptor().getMessageTypes().get(56);
-    internal_static_context_EndPointId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPointId_descriptor,
-        new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid", });
-    internal_static_context_EndPoint_descriptor =
-      getDescriptor().getMessageTypes().get(57);
-    internal_static_context_EndPoint_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPoint_descriptor,
-        new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation", });
-    internal_static_context_EndPointName_descriptor =
-      getDescriptor().getMessageTypes().get(58);
-    internal_static_context_EndPointName_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPointName_descriptor,
-        new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType", });
-    internal_static_context_EndPointIdList_descriptor =
-      getDescriptor().getMessageTypes().get(59);
-    internal_static_context_EndPointIdList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPointIdList_descriptor,
-        new java.lang.String[] { "EndpointIds", });
-    internal_static_context_EndPointNameList_descriptor =
-      getDescriptor().getMessageTypes().get(60);
-    internal_static_context_EndPointNameList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_EndPointNameList_descriptor,
-        new java.lang.String[] { "EndpointNames", });
-    internal_static_context_ConfigRule_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(61);
-    internal_static_context_ConfigRule_Custom_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConfigRule_Custom_descriptor,
-        new java.lang.String[] { "ResourceKey", "ResourceValue", });
-    internal_static_context_ConfigRule_ACL_descriptor =
-      getDescriptor().getMessageTypes().get(62);
-    internal_static_context_ConfigRule_ACL_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConfigRule_ACL_descriptor,
-        new java.lang.String[] { "EndpointId", "RuleSet", });
-    internal_static_context_ConfigRule_descriptor =
-      getDescriptor().getMessageTypes().get(63);
-    internal_static_context_ConfigRule_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_ConfigRule_descriptor,
-        new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule", });
-    internal_static_context_Constraint_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(64);
-    internal_static_context_Constraint_Custom_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_Custom_descriptor,
-        new java.lang.String[] { "ConstraintType", "ConstraintValue", });
-    internal_static_context_Constraint_Schedule_descriptor =
-      getDescriptor().getMessageTypes().get(65);
-    internal_static_context_Constraint_Schedule_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_Schedule_descriptor,
-        new java.lang.String[] { "StartTimestamp", "DurationDays", });
-    internal_static_context_GPS_Position_descriptor =
-      getDescriptor().getMessageTypes().get(66);
-    internal_static_context_GPS_Position_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_GPS_Position_descriptor,
-        new java.lang.String[] { "Latitude", "Longitude", });
-    internal_static_context_Location_descriptor =
-      getDescriptor().getMessageTypes().get(67);
-    internal_static_context_Location_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Location_descriptor,
-        new java.lang.String[] { "Region", "GpsPosition", "Location", });
-    internal_static_context_Constraint_EndPointLocation_descriptor =
-      getDescriptor().getMessageTypes().get(68);
-    internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_EndPointLocation_descriptor,
-        new java.lang.String[] { "EndpointId", "Location", });
-    internal_static_context_Constraint_EndPointPriority_descriptor =
-      getDescriptor().getMessageTypes().get(69);
-    internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_EndPointPriority_descriptor,
-        new java.lang.String[] { "EndpointId", "Priority", });
-    internal_static_context_Constraint_SLA_Latency_descriptor =
-      getDescriptor().getMessageTypes().get(70);
-    internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_SLA_Latency_descriptor,
-        new java.lang.String[] { "E2ELatencyMs", });
-    internal_static_context_Constraint_SLA_Capacity_descriptor =
-      getDescriptor().getMessageTypes().get(71);
-    internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_SLA_Capacity_descriptor,
-        new java.lang.String[] { "CapacityGbps", });
-    internal_static_context_Constraint_SLA_Availability_descriptor =
-      getDescriptor().getMessageTypes().get(72);
-    internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_SLA_Availability_descriptor,
-        new java.lang.String[] { "NumDisjointPaths", "AllActive", "Availability", });
-    internal_static_context_Constraint_SLA_Isolation_level_descriptor =
-      getDescriptor().getMessageTypes().get(73);
-    internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_SLA_Isolation_level_descriptor,
-        new java.lang.String[] { "IsolationLevel", });
-    internal_static_context_Constraint_Exclusions_descriptor =
-      getDescriptor().getMessageTypes().get(74);
-    internal_static_context_Constraint_Exclusions_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_Exclusions_descriptor,
-        new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds", });
-    internal_static_context_Constraint_descriptor =
-      getDescriptor().getMessageTypes().get(75);
-    internal_static_context_Constraint_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_Constraint_descriptor,
-        new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint", });
-    internal_static_context_TeraFlowController_descriptor =
-      getDescriptor().getMessageTypes().get(76);
-    internal_static_context_TeraFlowController_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_TeraFlowController_descriptor,
-        new java.lang.String[] { "ContextId", "IpAddress", "Port", });
-    internal_static_context_AuthenticationResult_descriptor =
-      getDescriptor().getMessageTypes().get(77);
-    internal_static_context_AuthenticationResult_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_context_AuthenticationResult_descriptor,
-        new java.lang.String[] { "ContextId", "Authenticated", });
-    acl.Acl.getDescriptor();
-    kpi_sample_types.KpiSampleTypes.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    static {
+        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\tacl.proto\032\026kpi" + "_sample_types.proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004" + "uuid\030\001 \001(\t\"\036\n\tTimestamp\022\021\n\ttimestamp\030\001 \001" + "(\001\"Z\n\005Event\022%\n\ttimestamp\030\001 \001(\0132\022.context" + ".Timestamp\022*\n\nevent_type\030\002 \001(\0162\026.context" + ".EventTypeEnum\"0\n\tContextId\022#\n\014context_u" + "uid\030\001 \001(\0132\r.context.Uuid\"\351\001\n\007Context\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022\014\n\004" + "name\030\002 \001(\t\022)\n\014topology_ids\030\003 \003(\0132\023.conte" + "xt.TopologyId\022\'\n\013service_ids\030\004 \003(\0132\022.con" + "text.ServiceId\022#\n\tslice_ids\030\005 \003(\0132\020.cont" + "ext.SliceId\022/\n\ncontroller\030\006 \001(\0132\033.contex" + "t.TeraFlowController\"8\n\rContextIdList\022\'\n" + "\013context_ids\030\001 \003(\0132\022.context.ContextId\"1" + "\n\013ContextList\022\"\n\010contexts\030\001 \003(\0132\020.contex" + "t.Context\"U\n\014ContextEvent\022\035\n\005event\030\001 \001(\013" + "2\016.context.Event\022&\n\ncontext_id\030\002 \001(\0132\022.c" + "ontext.ContextId\"Z\n\nTopologyId\022&\n\ncontex" + "t_id\030\001 \001(\0132\022.context.ContextId\022$\n\rtopolo" + "gy_uuid\030\002 \001(\0132\r.context.Uuid\"\214\001\n\010Topolog" + "y\022(\n\013topology_id\030\001 \001(\0132\023.context.Topolog" + "yId\022\014\n\004name\030\002 \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021." + "context.DeviceId\022!\n\010link_ids\030\004 \003(\0132\017.con" + "text.LinkId\"\211\001\n\017TopologyDetails\022(\n\013topol" + "ogy_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004nam" + "e\030\002 \001(\t\022 \n\007devices\030\003 \003(\0132\017.context.Devic" + "e\022\034\n\005links\030\004 \003(\0132\r.context.Link\";\n\016Topol" + "ogyIdList\022)\n\014topology_ids\030\001 \003(\0132\023.contex" + "t.TopologyId\"5\n\014TopologyList\022%\n\ntopologi" + "es\030\001 \003(\0132\021.context.Topology\"X\n\rTopologyE" + "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" + "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" + "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" + ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" + "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" + "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" + "xt.DeviceConfig\022G\n\031device_operational_st" + "atus\030\005 \001(\0162$.context.DeviceOperationalSt" + "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" + "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" + "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" + " \003(\0132\022.context.Component\022(\n\rcontroller_i" + "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" + "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" + "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" + "s\030\004 \003(\0132\".context.Component.AttributesEn" + "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" + "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" + "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" + "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" + "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " + "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" + "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." + "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" + "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" + "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " + "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" + "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " + "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" + "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" + "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" + "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" + " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" + "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" + "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" + "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" + "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" + "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" + "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" + "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" + "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" + "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" + "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" + " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" + "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" + "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" + ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" + "ntext.ServiceStatus\022.\n\016service_config\030\007 " + "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" + "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" + "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" + "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" + "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" + "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" + "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" + "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" + "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" + "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" + "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" + "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" + "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " + "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" + "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" + "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" + "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" + "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." + "context.EndPointId\022.\n\021slice_constraints\030" + "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" + "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" + "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" + "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" + "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" + "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" + "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" + "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" + "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" + "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" + "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" + "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" + "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" + "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" + "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" + "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" + "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" + "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" + "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" + "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" + "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" + "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" + "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" + "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" + "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" + "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" + "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" + " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" + "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" + "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" + "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" + "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" + "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" + "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" + "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" + "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" + "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" + "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" + ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" + "\rconnection_id\030\001 \001(\0132\025.context.Connectio" + "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" + "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" + "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" + "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" + "\033.context.ConnectionSettings\"A\n\020Connecti" + "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" + "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" + "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" + "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." + "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" + "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" + "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" + "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" + "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" + "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" + "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" + "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" + "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" + "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " + "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" + "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" + "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" + "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" + "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" + "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" + "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" + "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" + "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" + "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" + ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" + "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" + "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" + "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" + "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" + "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" + "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" + "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " + "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" + "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" + "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" + "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" + "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" + "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" + "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" + "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" + "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" + "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" + "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" + "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" + "isolation_level\030\001 \003(\0162\033.context.Isolatio" + "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" + "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" + ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" + "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" + ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" + "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" + "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" + "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" + "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" + "2$.context.Constraint_EndPointLocationH\000" + "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" + "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" + "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" + "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" + "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" + "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" + "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" + ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" + "lusions\030\n \001(\0132\036.context.Constraint_Exclu" + "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" + "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" + "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" + "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" + "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" + " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" + "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" + "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\321\002\n\020Dev" + "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" + "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" + "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" + "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" + "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" + "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" + "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010\022\032\n\026" + "DEVICEDRIVER_FLEXSCALE\020\t\022\032\n\026DEVICEDRIVER" + "_IETF_ACTN\020\n*\217\001\n\033DeviceOperationalStatus" + "Enum\022%\n!DEVICEOPERATIONALSTATUS_UNDEFINE" + "D\020\000\022$\n DEVICEOPERATIONALSTATUS_DISABLED\020" + "\001\022#\n\037DEVICEOPERATIONALSTATUS_ENABLED\020\002*\252" + "\001\n\017ServiceTypeEnum\022\027\n\023SERVICETYPE_UNKNOW" + "N\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n\020SERVICETYPE" + "_L2NM\020\002\022)\n%SERVICETYPE_TAPI_CONNECTIVITY" + "_SERVICE\020\003\022\022\n\016SERVICETYPE_TE\020\004\022\023\n\017SERVIC" + "ETYPE_E2E\020\005*\304\001\n\021ServiceStatusEnum\022\033\n\027SER" + "VICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_" + "PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026S" + "ERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS" + "_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_" + "VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICES" + "TATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED" + "\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_" + "ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLIC" + "ESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEn" + "um\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIG" + "ACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n" + "\024ConstraintActionEnum\022\036\n\032CONSTRAINTACTIO" + "N_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022" + "\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolati" + "onLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICA" + "L_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021" + "PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_I" + "SOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION" + "\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NE" + "TWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_I" + "SOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListCon" + "textIds\022\016.context.Empty\032\026.context.Contex" + "tIdList\"\000\0226\n\014ListContexts\022\016.context.Empt" + "y\032\024.context.ContextList\"\000\0224\n\nGetContext\022" + "\022.context.ContextId\032\020.context.Context\"\000\022" + "4\n\nSetContext\022\020.context.Context\032\022.contex" + "t.ContextId\"\000\0225\n\rRemoveContext\022\022.context" + ".ContextId\032\016.context.Empty\"\000\022=\n\020GetConte" + "xtEvents\022\016.context.Empty\032\025.context.Conte" + "xtEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context" + ".ContextId\032\027.context.TopologyIdList\"\000\022=\n" + "\016ListTopologies\022\022.context.ContextId\032\025.co" + "ntext.TopologyList\"\000\0227\n\013GetTopology\022\023.co" + "ntext.TopologyId\032\021.context.Topology\"\000\022E\n" + "\022GetTopologyDetails\022\023.context.TopologyId" + "\032\030.context.TopologyDetails\"\000\0227\n\013SetTopol" + "ogy\022\021.context.Topology\032\023.context.Topolog" + "yId\"\000\0227\n\016RemoveTopology\022\023.context.Topolo" + "gyId\032\016.context.Empty\"\000\022?\n\021GetTopologyEve" + "nts\022\016.context.Empty\032\026.context.TopologyEv" + "ent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty" + "\032\025.context.DeviceIdList\"\000\0224\n\013ListDevices" + "\022\016.context.Empty\032\023.context.DeviceList\"\000\022" + "1\n\tGetDevice\022\021.context.DeviceId\032\017.contex" + "t.Device\"\000\0221\n\tSetDevice\022\017.context.Device" + "\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021." + "context.DeviceId\032\016.context.Empty\"\000\022;\n\017Ge" + "tDeviceEvents\022\016.context.Empty\032\024.context." + "DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.contex" + "t.DeviceFilter\032\023.context.DeviceList\"\000\022I\n" + "\021ListEndPointNames\022\027.context.EndPointIdL" + "ist\032\031.context.EndPointNameList\"\000\0224\n\013List" + "LinkIds\022\016.context.Empty\032\023.context.LinkId" + "List\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.co" + "ntext.LinkList\"\000\022+\n\007GetLink\022\017.context.Li" + "nkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.conte" + "xt.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink" + "\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rG" + "etLinkEvents\022\016.context.Empty\032\022.context.L" + "inkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context" + ".ContextId\032\026.context.ServiceIdList\"\000\022:\n\014" + "ListServices\022\022.context.ContextId\032\024.conte" + "xt.ServiceList\"\000\0224\n\nGetService\022\022.context" + ".ServiceId\032\020.context.Service\"\000\0224\n\nSetSer" + "vice\022\020.context.Service\032\022.context.Service" + "Id\"\000\0226\n\014UnsetService\022\020.context.Service\032\022" + ".context.ServiceId\"\000\0225\n\rRemoveService\022\022." + "context.ServiceId\032\016.context.Empty\"\000\022=\n\020G" + "etServiceEvents\022\016.context.Empty\032\025.contex" + "t.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.co" + "ntext.ServiceFilter\032\024.context.ServiceLis" + "t\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032" + "\024.context.SliceIdList\"\000\0226\n\nListSlices\022\022." + "context.ContextId\032\022.context.SliceList\"\000\022" + ".\n\010GetSlice\022\020.context.SliceId\032\016.context." + "Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.co" + "ntext.SliceId\"\000\0220\n\nUnsetSlice\022\016.context." + "Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice" + "\022\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016" + "GetSliceEvents\022\016.context.Empty\032\023.context" + ".SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context" + ".SliceFilter\032\022.context.SliceList\"\000\022D\n\021Li" + "stConnectionIds\022\022.context.ServiceId\032\031.co" + "ntext.ConnectionIdList\"\000\022@\n\017ListConnecti" + "ons\022\022.context.ServiceId\032\027.context.Connec" + "tionList\"\000\022=\n\rGetConnection\022\025.context.Co" + "nnectionId\032\023.context.Connection\"\000\022=\n\rSet" + "Connection\022\023.context.Connection\032\025.contex" + "t.ConnectionId\"\000\022;\n\020RemoveConnection\022\025.c" + "ontext.ConnectionId\032\016.context.Empty\"\000\022C\n" + "\023GetConnectionEvents\022\016.context.Empty\032\030.c" + "ontext.ConnectionEvent\"\0000\001b\006proto3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
+        internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0);
+        internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {});
+        internal_static_context_Uuid_descriptor = getDescriptor().getMessageTypes().get(1);
+        internal_static_context_Uuid_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Uuid_descriptor, new java.lang.String[] { "Uuid" });
+        internal_static_context_Timestamp_descriptor = getDescriptor().getMessageTypes().get(2);
+        internal_static_context_Timestamp_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Timestamp_descriptor, new java.lang.String[] { "Timestamp" });
+        internal_static_context_Event_descriptor = getDescriptor().getMessageTypes().get(3);
+        internal_static_context_Event_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Event_descriptor, new java.lang.String[] { "Timestamp", "EventType" });
+        internal_static_context_ContextId_descriptor = getDescriptor().getMessageTypes().get(4);
+        internal_static_context_ContextId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextId_descriptor, new java.lang.String[] { "ContextUuid" });
+        internal_static_context_Context_descriptor = getDescriptor().getMessageTypes().get(5);
+        internal_static_context_Context_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Context_descriptor, new java.lang.String[] { "ContextId", "Name", "TopologyIds", "ServiceIds", "SliceIds", "Controller" });
+        internal_static_context_ContextIdList_descriptor = getDescriptor().getMessageTypes().get(6);
+        internal_static_context_ContextIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextIdList_descriptor, new java.lang.String[] { "ContextIds" });
+        internal_static_context_ContextList_descriptor = getDescriptor().getMessageTypes().get(7);
+        internal_static_context_ContextList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextList_descriptor, new java.lang.String[] { "Contexts" });
+        internal_static_context_ContextEvent_descriptor = getDescriptor().getMessageTypes().get(8);
+        internal_static_context_ContextEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextEvent_descriptor, new java.lang.String[] { "Event", "ContextId" });
+        internal_static_context_TopologyId_descriptor = getDescriptor().getMessageTypes().get(9);
+        internal_static_context_TopologyId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyId_descriptor, new java.lang.String[] { "ContextId", "TopologyUuid" });
+        internal_static_context_Topology_descriptor = getDescriptor().getMessageTypes().get(10);
+        internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds" });
+        internal_static_context_TopologyDetails_descriptor = getDescriptor().getMessageTypes().get(11);
+        internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links" });
+        internal_static_context_TopologyIdList_descriptor = getDescriptor().getMessageTypes().get(12);
+        internal_static_context_TopologyIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyIdList_descriptor, new java.lang.String[] { "TopologyIds" });
+        internal_static_context_TopologyList_descriptor = getDescriptor().getMessageTypes().get(13);
+        internal_static_context_TopologyList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyList_descriptor, new java.lang.String[] { "Topologies" });
+        internal_static_context_TopologyEvent_descriptor = getDescriptor().getMessageTypes().get(14);
+        internal_static_context_TopologyEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyEvent_descriptor, new java.lang.String[] { "Event", "TopologyId" });
+        internal_static_context_DeviceId_descriptor = getDescriptor().getMessageTypes().get(15);
+        internal_static_context_DeviceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceId_descriptor, new java.lang.String[] { "DeviceUuid" });
+        internal_static_context_Device_descriptor = getDescriptor().getMessageTypes().get(16);
+        internal_static_context_Device_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Device_descriptor, new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Components", "ControllerId" });
+        internal_static_context_Component_descriptor = getDescriptor().getMessageTypes().get(17);
+        internal_static_context_Component_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Component_descriptor, new java.lang.String[] { "ComponentUuid", "Name", "Type", "Attributes", "Parent" });
+        internal_static_context_Component_AttributesEntry_descriptor = internal_static_context_Component_descriptor.getNestedTypes().get(0);
+        internal_static_context_Component_AttributesEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Component_AttributesEntry_descriptor, new java.lang.String[] { "Key", "Value" });
+        internal_static_context_DeviceConfig_descriptor = getDescriptor().getMessageTypes().get(18);
+        internal_static_context_DeviceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
+        internal_static_context_DeviceIdList_descriptor = getDescriptor().getMessageTypes().get(19);
+        internal_static_context_DeviceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceIdList_descriptor, new java.lang.String[] { "DeviceIds" });
+        internal_static_context_DeviceList_descriptor = getDescriptor().getMessageTypes().get(20);
+        internal_static_context_DeviceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceList_descriptor, new java.lang.String[] { "Devices" });
+        internal_static_context_DeviceFilter_descriptor = getDescriptor().getMessageTypes().get(21);
+        internal_static_context_DeviceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceFilter_descriptor, new java.lang.String[] { "DeviceIds", "IncludeEndpoints", "IncludeConfigRules", "IncludeComponents" });
+        internal_static_context_DeviceEvent_descriptor = getDescriptor().getMessageTypes().get(22);
+        internal_static_context_DeviceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceEvent_descriptor, new java.lang.String[] { "Event", "DeviceId", "DeviceConfig" });
+        internal_static_context_LinkId_descriptor = getDescriptor().getMessageTypes().get(23);
+        internal_static_context_LinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkId_descriptor, new java.lang.String[] { "LinkUuid" });
+        internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24);
+        internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" });
+        internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25);
+        internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes" });
+        internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26);
+        internal_static_context_LinkIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkIdList_descriptor, new java.lang.String[] { "LinkIds" });
+        internal_static_context_LinkList_descriptor = getDescriptor().getMessageTypes().get(27);
+        internal_static_context_LinkList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkList_descriptor, new java.lang.String[] { "Links" });
+        internal_static_context_LinkEvent_descriptor = getDescriptor().getMessageTypes().get(28);
+        internal_static_context_LinkEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkEvent_descriptor, new java.lang.String[] { "Event", "LinkId" });
+        internal_static_context_ServiceId_descriptor = getDescriptor().getMessageTypes().get(29);
+        internal_static_context_ServiceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceId_descriptor, new java.lang.String[] { "ContextId", "ServiceUuid" });
+        internal_static_context_Service_descriptor = getDescriptor().getMessageTypes().get(30);
+        internal_static_context_Service_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Service_descriptor, new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp" });
+        internal_static_context_ServiceStatus_descriptor = getDescriptor().getMessageTypes().get(31);
+        internal_static_context_ServiceStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceStatus_descriptor, new java.lang.String[] { "ServiceStatus" });
+        internal_static_context_ServiceConfig_descriptor = getDescriptor().getMessageTypes().get(32);
+        internal_static_context_ServiceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
+        internal_static_context_ServiceIdList_descriptor = getDescriptor().getMessageTypes().get(33);
+        internal_static_context_ServiceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceIdList_descriptor, new java.lang.String[] { "ServiceIds" });
+        internal_static_context_ServiceList_descriptor = getDescriptor().getMessageTypes().get(34);
+        internal_static_context_ServiceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceList_descriptor, new java.lang.String[] { "Services" });
+        internal_static_context_ServiceFilter_descriptor = getDescriptor().getMessageTypes().get(35);
+        internal_static_context_ServiceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceFilter_descriptor, new java.lang.String[] { "ServiceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeConfigRules" });
+        internal_static_context_ServiceEvent_descriptor = getDescriptor().getMessageTypes().get(36);
+        internal_static_context_ServiceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceEvent_descriptor, new java.lang.String[] { "Event", "ServiceId" });
+        internal_static_context_SliceId_descriptor = getDescriptor().getMessageTypes().get(37);
+        internal_static_context_SliceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceId_descriptor, new java.lang.String[] { "ContextId", "SliceUuid" });
+        internal_static_context_Slice_descriptor = getDescriptor().getMessageTypes().get(38);
+        internal_static_context_Slice_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Slice_descriptor, new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp" });
+        internal_static_context_SliceOwner_descriptor = getDescriptor().getMessageTypes().get(39);
+        internal_static_context_SliceOwner_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceOwner_descriptor, new java.lang.String[] { "OwnerUuid", "OwnerString" });
+        internal_static_context_SliceStatus_descriptor = getDescriptor().getMessageTypes().get(40);
+        internal_static_context_SliceStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceStatus_descriptor, new java.lang.String[] { "SliceStatus" });
+        internal_static_context_SliceConfig_descriptor = getDescriptor().getMessageTypes().get(41);
+        internal_static_context_SliceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
+        internal_static_context_SliceIdList_descriptor = getDescriptor().getMessageTypes().get(42);
+        internal_static_context_SliceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceIdList_descriptor, new java.lang.String[] { "SliceIds" });
+        internal_static_context_SliceList_descriptor = getDescriptor().getMessageTypes().get(43);
+        internal_static_context_SliceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceList_descriptor, new java.lang.String[] { "Slices" });
+        internal_static_context_SliceFilter_descriptor = getDescriptor().getMessageTypes().get(44);
+        internal_static_context_SliceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceFilter_descriptor, new java.lang.String[] { "SliceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeServiceIds", "IncludeSubsliceIds", "IncludeConfigRules" });
+        internal_static_context_SliceEvent_descriptor = getDescriptor().getMessageTypes().get(45);
+        internal_static_context_SliceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceEvent_descriptor, new java.lang.String[] { "Event", "SliceId" });
+        internal_static_context_ConnectionId_descriptor = getDescriptor().getMessageTypes().get(46);
+        internal_static_context_ConnectionId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionId_descriptor, new java.lang.String[] { "ConnectionUuid" });
+        internal_static_context_ConnectionSettings_L0_descriptor = getDescriptor().getMessageTypes().get(47);
+        internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L0_descriptor, new java.lang.String[] { "LspSymbolicName" });
+        internal_static_context_ConnectionSettings_L2_descriptor = getDescriptor().getMessageTypes().get(48);
+        internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L2_descriptor, new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass" });
+        internal_static_context_ConnectionSettings_L3_descriptor = getDescriptor().getMessageTypes().get(49);
+        internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L3_descriptor, new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl" });
+        internal_static_context_ConnectionSettings_L4_descriptor = getDescriptor().getMessageTypes().get(50);
+        internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L4_descriptor, new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl" });
+        internal_static_context_ConnectionSettings_descriptor = getDescriptor().getMessageTypes().get(51);
+        internal_static_context_ConnectionSettings_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_descriptor, new java.lang.String[] { "L0", "L2", "L3", "L4" });
+        internal_static_context_Connection_descriptor = getDescriptor().getMessageTypes().get(52);
+        internal_static_context_Connection_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Connection_descriptor, new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings" });
+        internal_static_context_ConnectionIdList_descriptor = getDescriptor().getMessageTypes().get(53);
+        internal_static_context_ConnectionIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionIdList_descriptor, new java.lang.String[] { "ConnectionIds" });
+        internal_static_context_ConnectionList_descriptor = getDescriptor().getMessageTypes().get(54);
+        internal_static_context_ConnectionList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionList_descriptor, new java.lang.String[] { "Connections" });
+        internal_static_context_ConnectionEvent_descriptor = getDescriptor().getMessageTypes().get(55);
+        internal_static_context_ConnectionEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionEvent_descriptor, new java.lang.String[] { "Event", "ConnectionId" });
+        internal_static_context_EndPointId_descriptor = getDescriptor().getMessageTypes().get(56);
+        internal_static_context_EndPointId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointId_descriptor, new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid" });
+        internal_static_context_EndPoint_descriptor = getDescriptor().getMessageTypes().get(57);
+        internal_static_context_EndPoint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPoint_descriptor, new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation" });
+        internal_static_context_EndPointName_descriptor = getDescriptor().getMessageTypes().get(58);
+        internal_static_context_EndPointName_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointName_descriptor, new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType" });
+        internal_static_context_EndPointIdList_descriptor = getDescriptor().getMessageTypes().get(59);
+        internal_static_context_EndPointIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointIdList_descriptor, new java.lang.String[] { "EndpointIds" });
+        internal_static_context_EndPointNameList_descriptor = getDescriptor().getMessageTypes().get(60);
+        internal_static_context_EndPointNameList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointNameList_descriptor, new java.lang.String[] { "EndpointNames" });
+        internal_static_context_ConfigRule_Custom_descriptor = getDescriptor().getMessageTypes().get(61);
+        internal_static_context_ConfigRule_Custom_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_Custom_descriptor, new java.lang.String[] { "ResourceKey", "ResourceValue" });
+        internal_static_context_ConfigRule_ACL_descriptor = getDescriptor().getMessageTypes().get(62);
+        internal_static_context_ConfigRule_ACL_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_ACL_descriptor, new java.lang.String[] { "EndpointId", "RuleSet" });
+        internal_static_context_ConfigRule_descriptor = getDescriptor().getMessageTypes().get(63);
+        internal_static_context_ConfigRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_descriptor, new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule" });
+        internal_static_context_Constraint_Custom_descriptor = getDescriptor().getMessageTypes().get(64);
+        internal_static_context_Constraint_Custom_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Custom_descriptor, new java.lang.String[] { "ConstraintType", "ConstraintValue" });
+        internal_static_context_Constraint_Schedule_descriptor = getDescriptor().getMessageTypes().get(65);
+        internal_static_context_Constraint_Schedule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Schedule_descriptor, new java.lang.String[] { "StartTimestamp", "DurationDays" });
+        internal_static_context_GPS_Position_descriptor = getDescriptor().getMessageTypes().get(66);
+        internal_static_context_GPS_Position_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_GPS_Position_descriptor, new java.lang.String[] { "Latitude", "Longitude" });
+        internal_static_context_Location_descriptor = getDescriptor().getMessageTypes().get(67);
+        internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Location" });
+        internal_static_context_Constraint_EndPointLocation_descriptor = getDescriptor().getMessageTypes().get(68);
+        internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointLocation_descriptor, new java.lang.String[] { "EndpointId", "Location" });
+        internal_static_context_Constraint_EndPointPriority_descriptor = getDescriptor().getMessageTypes().get(69);
+        internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointPriority_descriptor, new java.lang.String[] { "EndpointId", "Priority" });
+        internal_static_context_Constraint_SLA_Latency_descriptor = getDescriptor().getMessageTypes().get(70);
+        internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Latency_descriptor, new java.lang.String[] { "E2ELatencyMs" });
+        internal_static_context_Constraint_SLA_Capacity_descriptor = getDescriptor().getMessageTypes().get(71);
+        internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Capacity_descriptor, new java.lang.String[] { "CapacityGbps" });
+        internal_static_context_Constraint_SLA_Availability_descriptor = getDescriptor().getMessageTypes().get(72);
+        internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Availability_descriptor, new java.lang.String[] { "NumDisjointPaths", "AllActive", "Availability" });
+        internal_static_context_Constraint_SLA_Isolation_level_descriptor = getDescriptor().getMessageTypes().get(73);
+        internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Isolation_level_descriptor, new java.lang.String[] { "IsolationLevel" });
+        internal_static_context_Constraint_Exclusions_descriptor = getDescriptor().getMessageTypes().get(74);
+        internal_static_context_Constraint_Exclusions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Exclusions_descriptor, new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds" });
+        internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(75);
+        internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint" });
+        internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(76);
+        internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" });
+        internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(77);
+        internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" });
+        acl.Acl.getDescriptor();
+        kpi_sample_types.KpiSampleTypes.getDescriptor();
+    }
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextService.java b/src/ztp/target/generated-sources/grpc/context/ContextService.java
index b356bac75e24f5f412c51de5450d284ea340ce12..f1c089fb564dbd0546b84ea19aa35f26ff331881 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextService.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextService.java
@@ -1,112 +1,105 @@
 package context;
 
-import io.quarkus.grpc.runtime.MutinyService;
+import io.quarkus.grpc.MutinyService;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: context.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: context.proto")
 public interface ContextService extends MutinyService {
 
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request);
-    
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Multi<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request);
-    
-    io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request);
-    
-    
 
-}
\ No newline at end of file
+    io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request);
+}
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
index 45a7959c4425a981fcbdaba6b06c22cd2fe769ac..db1b9c1705820591966896bfbe353360304f58a0 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
@@ -2,417 +2,455 @@ package context;
 
 import io.grpc.BindableService;
 import io.quarkus.grpc.GrpcService;
-import io.quarkus.grpc.runtime.MutinyBean;
+import io.quarkus.grpc.MutinyBean;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: context.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: context.proto")
 public class ContextServiceBean extends MutinyContextServiceGrpc.ContextServiceImplBase implements BindableService, MutinyBean {
 
     private final ContextService delegate;
 
     ContextServiceBean(@GrpcService ContextService delegate) {
-       this.delegate = delegate;
+        this.delegate = delegate;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listContextIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listContextIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listContexts(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listContexts(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.getContext(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getContext(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request) {
-       try {
-         return delegate.setContext(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setContext(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.removeContext(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeContext(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listTopologyIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listTopologyIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listTopologies(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listTopologies(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request) {
-       try {
-         return delegate.getTopology(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getTopology(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-       try {
-         return delegate.getTopologyDetails(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getTopologyDetails(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
-       try {
-         return delegate.setTopology(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setTopology(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request) {
-       try {
-         return delegate.removeTopology(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeTopology(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listDeviceIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listDeviceIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listDevices(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listDevices(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request) {
-       try {
-         return delegate.getDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request) {
-       try {
-         return delegate.setDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request) {
-       try {
-         return delegate.removeDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-       try {
-         return delegate.selectDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.selectDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-       try {
-         return delegate.listEndPointNames(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listEndPointNames(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listLinkIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listLinkIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.listLinks(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listLinks(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request) {
-       try {
-         return delegate.getLink(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request) {
-       try {
-         return delegate.setLink(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request) {
-       try {
-         return delegate.removeLink(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeLink(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listServiceIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listServiceIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listServices(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listServices(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request) {
-       try {
-         return delegate.getService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getService(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request) {
-       try {
-         return delegate.setService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setService(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request) {
-       try {
-         return delegate.unsetService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.unsetService(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request) {
-       try {
-         return delegate.removeService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeService(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-       try {
-         return delegate.selectService(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.selectService(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listSliceIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listSliceIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request) {
-       try {
-         return delegate.listSlices(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listSlices(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request) {
-       try {
-         return delegate.getSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getSlice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request) {
-       try {
-         return delegate.setSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setSlice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request) {
-       try {
-         return delegate.unsetSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.unsetSlice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request) {
-       try {
-         return delegate.removeSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeSlice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-       try {
-         return delegate.selectSlice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.selectSlice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
-       try {
-         return delegate.listConnectionIds(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listConnectionIds(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request) {
-       try {
-         return delegate.listConnections(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.listConnections(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request) {
-       try {
-         return delegate.getConnection(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getConnection(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request) {
-       try {
-         return delegate.setConnection(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setConnection(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
-       try {
-         return delegate.removeConnection(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.removeConnection(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getContextEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getContextEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getTopologyEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getTopologyEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getDeviceEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getDeviceEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getLinkEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getLinkEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getServiceEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getServiceEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getSliceEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getSliceEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getConnectionEvents(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getConnectionEvents(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
index 0b0e9f83f74d1ce33ba6d609544dabb590024758..88ab831f59f17e1e1ef197109a5917cda49dcc76 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
@@ -1,227 +1,272 @@
 package context;
 
 import java.util.function.BiFunction;
+import io.quarkus.grpc.MutinyClient;
 
-import io.quarkus.grpc.runtime.MutinyClient;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: context.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: context.proto")
 public class ContextServiceClient implements ContextService, MutinyClient<MutinyContextServiceGrpc.MutinyContextServiceStub> {
 
     private final MutinyContextServiceGrpc.MutinyContextServiceStub stub;
 
     public ContextServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyContextServiceGrpc.MutinyContextServiceStub, MutinyContextServiceGrpc.MutinyContextServiceStub> stubConfigurator) {
-       this.stub = stubConfigurator.apply(name,MutinyContextServiceGrpc.newMutinyStub(channel));
+        this.stub = stubConfigurator.apply(name, MutinyContextServiceGrpc.newMutinyStub(channel));
+    }
+
+    private ContextServiceClient(MutinyContextServiceGrpc.MutinyContextServiceStub stub) {
+        this.stub = stub;
+    }
+
+    public ContextServiceClient newInstanceWithStub(MutinyContextServiceGrpc.MutinyContextServiceStub stub) {
+        return new ContextServiceClient(stub);
     }
 
     @Override
     public MutinyContextServiceGrpc.MutinyContextServiceStub getStub() {
-       return stub;
+        return stub;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request) {
-       return stub.listContextIds(request);
+        return stub.listContextIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request) {
-       return stub.listContexts(request);
+        return stub.listContexts(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request) {
-       return stub.getContext(request);
+        return stub.getContext(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request) {
-       return stub.setContext(request);
+        return stub.setContext(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request) {
-       return stub.removeContext(request);
+        return stub.removeContext(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request) {
-       return stub.listTopologyIds(request);
+        return stub.listTopologyIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request) {
-       return stub.listTopologies(request);
+        return stub.listTopologies(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request) {
-       return stub.getTopology(request);
+        return stub.getTopology(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-       return stub.getTopologyDetails(request);
+        return stub.getTopologyDetails(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
-       return stub.setTopology(request);
+        return stub.setTopology(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request) {
-       return stub.removeTopology(request);
+        return stub.removeTopology(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request) {
-       return stub.listDeviceIds(request);
+        return stub.listDeviceIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request) {
-       return stub.listDevices(request);
+        return stub.listDevices(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request) {
-       return stub.getDevice(request);
+        return stub.getDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request) {
-       return stub.setDevice(request);
+        return stub.setDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request) {
-       return stub.removeDevice(request);
+        return stub.removeDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-       return stub.selectDevice(request);
+        return stub.selectDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-       return stub.listEndPointNames(request);
+        return stub.listEndPointNames(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
-       return stub.listLinkIds(request);
+        return stub.listLinkIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request) {
-       return stub.listLinks(request);
+        return stub.listLinks(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request) {
-       return stub.getLink(request);
+        return stub.getLink(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request) {
-       return stub.setLink(request);
+        return stub.setLink(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request) {
-       return stub.removeLink(request);
+        return stub.removeLink(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request) {
-       return stub.listServiceIds(request);
+        return stub.listServiceIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request) {
-       return stub.listServices(request);
+        return stub.listServices(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request) {
-       return stub.getService(request);
+        return stub.getService(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request) {
-       return stub.setService(request);
+        return stub.setService(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request) {
-       return stub.unsetService(request);
+        return stub.unsetService(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request) {
-       return stub.removeService(request);
+        return stub.removeService(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-       return stub.selectService(request);
+        return stub.selectService(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
-       return stub.listSliceIds(request);
+        return stub.listSliceIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request) {
-       return stub.listSlices(request);
+        return stub.listSlices(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request) {
-       return stub.getSlice(request);
+        return stub.getSlice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request) {
-       return stub.setSlice(request);
+        return stub.setSlice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request) {
-       return stub.unsetSlice(request);
+        return stub.unsetSlice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request) {
-       return stub.removeSlice(request);
+        return stub.removeSlice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-       return stub.selectSlice(request);
+        return stub.selectSlice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
-       return stub.listConnectionIds(request);
+        return stub.listConnectionIds(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request) {
-       return stub.listConnections(request);
+        return stub.listConnections(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request) {
-       return stub.getConnection(request);
+        return stub.getConnection(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request) {
-       return stub.setConnection(request);
+        return stub.setConnection(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
-       return stub.removeConnection(request);
+        return stub.removeConnection(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
-       return stub.getContextEvents(request);
+        return stub.getContextEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request) {
-       return stub.getTopologyEvents(request);
+        return stub.getTopologyEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request) {
-       return stub.getDeviceEvents(request);
+        return stub.getDeviceEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request) {
-       return stub.getLinkEvents(request);
+        return stub.getLinkEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request) {
-       return stub.getServiceEvents(request);
+        return stub.getServiceEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request) {
-       return stub.getSliceEvents(request);
+        return stub.getSliceEvents(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
-       return stub.getConnectionEvents(request);
+        return stub.getConnectionEvents(request);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
index 27c73f5424bcf2d6739b5884f4946ced1515398c..defb37810c2d84b4ba40fcc85e1e77def272d50d 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
@@ -4,3775 +4,2315 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.38.1)",
-    comments = "Source: context.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: context.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class ContextServiceGrpc {
 
-  private ContextServiceGrpc() {}
+    private ContextServiceGrpc() {
+    }
 
-  public static final String SERVICE_NAME = "context.ContextService";
+    public static final String SERVICE_NAME = "context.ContextService";
 
-  // Static method descriptors that strictly reflect the proto.
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextIdList> getListContextIdsMethod;
+    // Static method descriptors that strictly reflect the proto.
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList> getListContextIdsMethod;
 
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListContextIds",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.ContextIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextIdList> getListContextIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList> getListContextIdsMethod;
-    if ((getListContextIdsMethod = ContextServiceGrpc.getListContextIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListContextIds", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.ContextIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList> getListContextIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList> getListContextIdsMethod;
         if ((getListContextIdsMethod = ContextServiceGrpc.getListContextIdsMethod) == null) {
-          ContextServiceGrpc.getListContextIdsMethod = getListContextIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListContextIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListContextIds"))
-              .build();
-        }
-      }
-    }
-    return getListContextIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextList> getListContextsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListContexts",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.ContextList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextList> getListContextsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList> getListContextsMethod;
-    if ((getListContextsMethod = ContextServiceGrpc.getListContextsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListContextIdsMethod = ContextServiceGrpc.getListContextIdsMethod) == null) {
+                    ContextServiceGrpc.getListContextIdsMethod = getListContextIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListContextIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListContextIds")).build();
+                }
+            }
+        }
+        return getListContextIdsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList> getListContextsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListContexts", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.ContextList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList> getListContextsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList> getListContextsMethod;
         if ((getListContextsMethod = ContextServiceGrpc.getListContextsMethod) == null) {
-          ContextServiceGrpc.getListContextsMethod = getListContextsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListContexts"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListContexts"))
-              .build();
-        }
-      }
-    }
-    return getListContextsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.Context> getGetContextMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetContext",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.Context.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.Context> getGetContextMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context> getGetContextMethod;
-    if ((getGetContextMethod = ContextServiceGrpc.getGetContextMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListContextsMethod = ContextServiceGrpc.getListContextsMethod) == null) {
+                    ContextServiceGrpc.getListContextsMethod = getListContextsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListContexts")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListContexts")).build();
+                }
+            }
+        }
+        return getListContextsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context> getGetContextMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetContext", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.Context.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context> getGetContextMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context> getGetContextMethod;
         if ((getGetContextMethod = ContextServiceGrpc.getGetContextMethod) == null) {
-          ContextServiceGrpc.getGetContextMethod = getGetContextMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetContext"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Context.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetContext"))
-              .build();
-        }
-      }
-    }
-    return getGetContextMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Context,
-      context.ContextOuterClass.ContextId> getSetContextMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetContext",
-      requestType = context.ContextOuterClass.Context.class,
-      responseType = context.ContextOuterClass.ContextId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Context,
-      context.ContextOuterClass.ContextId> getSetContextMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId> getSetContextMethod;
-    if ((getSetContextMethod = ContextServiceGrpc.getSetContextMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetContextMethod = ContextServiceGrpc.getGetContextMethod) == null) {
+                    ContextServiceGrpc.getGetContextMethod = getGetContextMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetContext")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Context.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetContext")).build();
+                }
+            }
+        }
+        return getGetContextMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId> getSetContextMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetContext", requestType = context.ContextOuterClass.Context.class, responseType = context.ContextOuterClass.ContextId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId> getSetContextMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId> getSetContextMethod;
         if ((getSetContextMethod = ContextServiceGrpc.getSetContextMethod) == null) {
-          ContextServiceGrpc.getSetContextMethod = getSetContextMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetContext"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Context.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetContext"))
-              .build();
-        }
-      }
-    }
-    return getSetContextMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.Empty> getRemoveContextMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveContext",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.Empty> getRemoveContextMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty> getRemoveContextMethod;
-    if ((getRemoveContextMethod = ContextServiceGrpc.getRemoveContextMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetContextMethod = ContextServiceGrpc.getSetContextMethod) == null) {
+                    ContextServiceGrpc.getSetContextMethod = getSetContextMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetContext")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Context.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetContext")).build();
+                }
+            }
+        }
+        return getSetContextMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty> getRemoveContextMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveContext", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty> getRemoveContextMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty> getRemoveContextMethod;
         if ((getRemoveContextMethod = ContextServiceGrpc.getRemoveContextMethod) == null) {
-          ContextServiceGrpc.getRemoveContextMethod = getRemoveContextMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveContext"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveContext"))
-              .build();
-        }
-      }
-    }
-    return getRemoveContextMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextEvent> getGetContextEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetContextEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.ContextEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ContextEvent> getGetContextEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent> getGetContextEventsMethod;
-    if ((getGetContextEventsMethod = ContextServiceGrpc.getGetContextEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveContextMethod = ContextServiceGrpc.getRemoveContextMethod) == null) {
+                    ContextServiceGrpc.getRemoveContextMethod = getRemoveContextMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveContext")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveContext")).build();
+                }
+            }
+        }
+        return getRemoveContextMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent> getGetContextEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetContextEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.ContextEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent> getGetContextEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent> getGetContextEventsMethod;
         if ((getGetContextEventsMethod = ContextServiceGrpc.getGetContextEventsMethod) == null) {
-          ContextServiceGrpc.getGetContextEventsMethod = getGetContextEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetContextEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetContextEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetContextEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListTopologyIds",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.TopologyIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod;
-    if ((getListTopologyIdsMethod = ContextServiceGrpc.getListTopologyIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetContextEventsMethod = ContextServiceGrpc.getGetContextEventsMethod) == null) {
+                    ContextServiceGrpc.getGetContextEventsMethod = getGetContextEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetContextEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetContextEvents")).build();
+                }
+            }
+        }
+        return getGetContextEventsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListTopologyIds", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.TopologyIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList> getListTopologyIdsMethod;
         if ((getListTopologyIdsMethod = ContextServiceGrpc.getListTopologyIdsMethod) == null) {
-          ContextServiceGrpc.getListTopologyIdsMethod = getListTopologyIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListTopologyIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListTopologyIds"))
-              .build();
-        }
-      }
-    }
-    return getListTopologyIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.TopologyList> getListTopologiesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListTopologies",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.TopologyList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.TopologyList> getListTopologiesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList> getListTopologiesMethod;
-    if ((getListTopologiesMethod = ContextServiceGrpc.getListTopologiesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListTopologyIdsMethod = ContextServiceGrpc.getListTopologyIdsMethod) == null) {
+                    ContextServiceGrpc.getListTopologyIdsMethod = getListTopologyIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListTopologyIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListTopologyIds")).build();
+                }
+            }
+        }
+        return getListTopologyIdsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList> getListTopologiesMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListTopologies", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.TopologyList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList> getListTopologiesMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList> getListTopologiesMethod;
         if ((getListTopologiesMethod = ContextServiceGrpc.getListTopologiesMethod) == null) {
-          ContextServiceGrpc.getListTopologiesMethod = getListTopologiesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListTopologies"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListTopologies"))
-              .build();
-        }
-      }
-    }
-    return getListTopologiesMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.Topology> getGetTopologyMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetTopology",
-      requestType = context.ContextOuterClass.TopologyId.class,
-      responseType = context.ContextOuterClass.Topology.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.Topology> getGetTopologyMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology> getGetTopologyMethod;
-    if ((getGetTopologyMethod = ContextServiceGrpc.getGetTopologyMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListTopologiesMethod = ContextServiceGrpc.getListTopologiesMethod) == null) {
+                    ContextServiceGrpc.getListTopologiesMethod = getListTopologiesMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListTopologies")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListTopologies")).build();
+                }
+            }
+        }
+        return getListTopologiesMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology> getGetTopologyMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetTopology", requestType = context.ContextOuterClass.TopologyId.class, responseType = context.ContextOuterClass.Topology.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology> getGetTopologyMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology> getGetTopologyMethod;
         if ((getGetTopologyMethod = ContextServiceGrpc.getGetTopologyMethod) == null) {
-          ContextServiceGrpc.getGetTopologyMethod = getGetTopologyMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopology"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Topology.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopology"))
-              .build();
-        }
-      }
-    }
-    return getGetTopologyMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetTopologyDetails",
-      requestType = context.ContextOuterClass.TopologyId.class,
-      responseType = context.ContextOuterClass.TopologyDetails.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
-    if ((getGetTopologyDetailsMethod = ContextServiceGrpc.getGetTopologyDetailsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetTopologyMethod = ContextServiceGrpc.getGetTopologyMethod) == null) {
+                    ContextServiceGrpc.getGetTopologyMethod = getGetTopologyMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopology")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Topology.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopology")).build();
+                }
+            }
+        }
+        return getGetTopologyMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetTopologyDetails", requestType = context.ContextOuterClass.TopologyId.class, responseType = context.ContextOuterClass.TopologyDetails.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails> getGetTopologyDetailsMethod;
         if ((getGetTopologyDetailsMethod = ContextServiceGrpc.getGetTopologyDetailsMethod) == null) {
-          ContextServiceGrpc.getGetTopologyDetailsMethod = getGetTopologyDetailsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopologyDetails"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyDetails.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopologyDetails"))
-              .build();
-        }
-      }
-    }
-    return getGetTopologyDetailsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Topology,
-      context.ContextOuterClass.TopologyId> getSetTopologyMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetTopology",
-      requestType = context.ContextOuterClass.Topology.class,
-      responseType = context.ContextOuterClass.TopologyId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Topology,
-      context.ContextOuterClass.TopologyId> getSetTopologyMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId> getSetTopologyMethod;
-    if ((getSetTopologyMethod = ContextServiceGrpc.getSetTopologyMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetTopologyDetailsMethod = ContextServiceGrpc.getGetTopologyDetailsMethod) == null) {
+                    ContextServiceGrpc.getGetTopologyDetailsMethod = getGetTopologyDetailsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopologyDetails")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyDetails.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopologyDetails")).build();
+                }
+            }
+        }
+        return getGetTopologyDetailsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId> getSetTopologyMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetTopology", requestType = context.ContextOuterClass.Topology.class, responseType = context.ContextOuterClass.TopologyId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId> getSetTopologyMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId> getSetTopologyMethod;
         if ((getSetTopologyMethod = ContextServiceGrpc.getSetTopologyMethod) == null) {
-          ContextServiceGrpc.getSetTopologyMethod = getSetTopologyMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetTopology"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Topology.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetTopology"))
-              .build();
-        }
-      }
-    }
-    return getSetTopologyMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.Empty> getRemoveTopologyMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveTopology",
-      requestType = context.ContextOuterClass.TopologyId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId,
-      context.ContextOuterClass.Empty> getRemoveTopologyMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty> getRemoveTopologyMethod;
-    if ((getRemoveTopologyMethod = ContextServiceGrpc.getRemoveTopologyMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetTopologyMethod = ContextServiceGrpc.getSetTopologyMethod) == null) {
+                    ContextServiceGrpc.getSetTopologyMethod = getSetTopologyMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetTopology")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Topology.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetTopology")).build();
+                }
+            }
+        }
+        return getSetTopologyMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty> getRemoveTopologyMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveTopology", requestType = context.ContextOuterClass.TopologyId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty> getRemoveTopologyMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty> getRemoveTopologyMethod;
         if ((getRemoveTopologyMethod = ContextServiceGrpc.getRemoveTopologyMethod) == null) {
-          ContextServiceGrpc.getRemoveTopologyMethod = getRemoveTopologyMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveTopology"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveTopology"))
-              .build();
-        }
-      }
-    }
-    return getRemoveTopologyMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetTopologyEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.TopologyEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod;
-    if ((getGetTopologyEventsMethod = ContextServiceGrpc.getGetTopologyEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveTopologyMethod = ContextServiceGrpc.getRemoveTopologyMethod) == null) {
+                    ContextServiceGrpc.getRemoveTopologyMethod = getRemoveTopologyMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveTopology")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveTopology")).build();
+                }
+            }
+        }
+        return getRemoveTopologyMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetTopologyEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.TopologyEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent> getGetTopologyEventsMethod;
         if ((getGetTopologyEventsMethod = ContextServiceGrpc.getGetTopologyEventsMethod) == null) {
-          ContextServiceGrpc.getGetTopologyEventsMethod = getGetTopologyEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopologyEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.TopologyEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopologyEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetTopologyEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListDeviceIds",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.DeviceIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod;
-    if ((getListDeviceIdsMethod = ContextServiceGrpc.getListDeviceIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetTopologyEventsMethod = ContextServiceGrpc.getGetTopologyEventsMethod) == null) {
+                    ContextServiceGrpc.getGetTopologyEventsMethod = getGetTopologyEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetTopologyEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.TopologyEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetTopologyEvents")).build();
+                }
+            }
+        }
+        return getGetTopologyEventsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListDeviceIds", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.DeviceIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList> getListDeviceIdsMethod;
         if ((getListDeviceIdsMethod = ContextServiceGrpc.getListDeviceIdsMethod) == null) {
-          ContextServiceGrpc.getListDeviceIdsMethod = getListDeviceIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListDeviceIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListDeviceIds"))
-              .build();
-        }
-      }
-    }
-    return getListDeviceIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceList> getListDevicesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListDevices",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.DeviceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceList> getListDevicesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList> getListDevicesMethod;
-    if ((getListDevicesMethod = ContextServiceGrpc.getListDevicesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListDeviceIdsMethod = ContextServiceGrpc.getListDeviceIdsMethod) == null) {
+                    ContextServiceGrpc.getListDeviceIdsMethod = getListDeviceIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListDeviceIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListDeviceIds")).build();
+                }
+            }
+        }
+        return getListDeviceIdsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList> getListDevicesMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListDevices", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.DeviceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList> getListDevicesMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList> getListDevicesMethod;
         if ((getListDevicesMethod = ContextServiceGrpc.getListDevicesMethod) == null) {
-          ContextServiceGrpc.getListDevicesMethod = getListDevicesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListDevices"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListDevices"))
-              .build();
-        }
-      }
-    }
-    return getListDevicesMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Device> getGetDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetDevice",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = context.ContextOuterClass.Device.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Device> getGetDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device> getGetDeviceMethod;
-    if ((getGetDeviceMethod = ContextServiceGrpc.getGetDeviceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListDevicesMethod = ContextServiceGrpc.getListDevicesMethod) == null) {
+                    ContextServiceGrpc.getListDevicesMethod = getListDevicesMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListDevices")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListDevices")).build();
+                }
+            }
+        }
+        return getListDevicesMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device> getGetDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetDevice", requestType = context.ContextOuterClass.DeviceId.class, responseType = context.ContextOuterClass.Device.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device> getGetDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device> getGetDeviceMethod;
         if ((getGetDeviceMethod = ContextServiceGrpc.getGetDeviceMethod) == null) {
-          ContextServiceGrpc.getGetDeviceMethod = getGetDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Device.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetDevice"))
-              .build();
-        }
-      }
-    }
-    return getGetDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getSetDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetDevice",
-      requestType = context.ContextOuterClass.Device.class,
-      responseType = context.ContextOuterClass.DeviceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getSetDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getSetDeviceMethod;
-    if ((getSetDeviceMethod = ContextServiceGrpc.getSetDeviceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetDeviceMethod = ContextServiceGrpc.getGetDeviceMethod) == null) {
+                    ContextServiceGrpc.getGetDeviceMethod = getGetDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Device.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetDevice")).build();
+                }
+            }
+        }
+        return getGetDeviceMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getSetDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetDevice", requestType = context.ContextOuterClass.Device.class, responseType = context.ContextOuterClass.DeviceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getSetDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getSetDeviceMethod;
         if ((getSetDeviceMethod = ContextServiceGrpc.getSetDeviceMethod) == null) {
-          ContextServiceGrpc.getSetDeviceMethod = getSetDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Device.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetDevice"))
-              .build();
-        }
-      }
-    }
-    return getSetDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Empty> getRemoveDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveDevice",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Empty> getRemoveDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getRemoveDeviceMethod;
-    if ((getRemoveDeviceMethod = ContextServiceGrpc.getRemoveDeviceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetDeviceMethod = ContextServiceGrpc.getSetDeviceMethod) == null) {
+                    ContextServiceGrpc.getSetDeviceMethod = getSetDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Device.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetDevice")).build();
+                }
+            }
+        }
+        return getSetDeviceMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getRemoveDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveDevice", requestType = context.ContextOuterClass.DeviceId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getRemoveDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getRemoveDeviceMethod;
         if ((getRemoveDeviceMethod = ContextServiceGrpc.getRemoveDeviceMethod) == null) {
-          ContextServiceGrpc.getRemoveDeviceMethod = getRemoveDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveDevice"))
-              .build();
-        }
-      }
-    }
-    return getRemoveDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetDeviceEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.DeviceEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod;
-    if ((getGetDeviceEventsMethod = ContextServiceGrpc.getGetDeviceEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveDeviceMethod = ContextServiceGrpc.getRemoveDeviceMethod) == null) {
+                    ContextServiceGrpc.getRemoveDeviceMethod = getRemoveDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveDevice")).build();
+                }
+            }
+        }
+        return getRemoveDeviceMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetDeviceEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.DeviceEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent> getGetDeviceEventsMethod;
         if ((getGetDeviceEventsMethod = ContextServiceGrpc.getGetDeviceEventsMethod) == null) {
-          ContextServiceGrpc.getGetDeviceEventsMethod = getGetDeviceEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDeviceEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetDeviceEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetDeviceEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter,
-      context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectDevice",
-      requestType = context.ContextOuterClass.DeviceFilter.class,
-      responseType = context.ContextOuterClass.DeviceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter,
-      context.ContextOuterClass.DeviceList> getSelectDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
-    if ((getSelectDeviceMethod = ContextServiceGrpc.getSelectDeviceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetDeviceEventsMethod = ContextServiceGrpc.getGetDeviceEventsMethod) == null) {
+                    ContextServiceGrpc.getGetDeviceEventsMethod = getGetDeviceEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetDeviceEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetDeviceEvents")).build();
+                }
+            }
+        }
+        return getGetDeviceEventsMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectDevice", requestType = context.ContextOuterClass.DeviceFilter.class, responseType = context.ContextOuterClass.DeviceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList> getSelectDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList> getSelectDeviceMethod;
         if ((getSelectDeviceMethod = ContextServiceGrpc.getSelectDeviceMethod) == null) {
-          ContextServiceGrpc.getSelectDeviceMethod = getSelectDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectDevice"))
-              .build();
-        }
-      }
-    }
-    return getSelectDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList,
-      context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListEndPointNames",
-      requestType = context.ContextOuterClass.EndPointIdList.class,
-      responseType = context.ContextOuterClass.EndPointNameList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList,
-      context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
-    if ((getListEndPointNamesMethod = ContextServiceGrpc.getListEndPointNamesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSelectDeviceMethod = ContextServiceGrpc.getSelectDeviceMethod) == null) {
+                    ContextServiceGrpc.getSelectDeviceMethod = getSelectDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceFilter.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectDevice")).build();
+                }
+            }
+        }
+        return getSelectDeviceMethod;
+    }
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListEndPointNames", requestType = context.ContextOuterClass.EndPointIdList.class, responseType = context.ContextOuterClass.EndPointNameList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList> getListEndPointNamesMethod;
         if ((getListEndPointNamesMethod = ContextServiceGrpc.getListEndPointNamesMethod) == null) {
-          ContextServiceGrpc.getListEndPointNamesMethod = getListEndPointNamesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListEndPointNames"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.EndPointIdList.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.EndPointNameList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListEndPointNames"))
-              .build();
-        }
-      }
-    }
-    return getListEndPointNamesMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkIdList> getListLinkIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListLinkIds",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.LinkIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkIdList> getListLinkIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList> getListLinkIdsMethod;
-    if ((getListLinkIdsMethod = ContextServiceGrpc.getListLinkIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListLinkIdsMethod = ContextServiceGrpc.getListLinkIdsMethod) == null) {
-          ContextServiceGrpc.getListLinkIdsMethod = getListLinkIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListLinkIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListLinkIds"))
-              .build();
-        }
-      }
-    }
-    return getListLinkIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkList> getListLinksMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListLinks",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.LinkList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkList> getListLinksMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList> getListLinksMethod;
-    if ((getListLinksMethod = ContextServiceGrpc.getListLinksMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListLinksMethod = ContextServiceGrpc.getListLinksMethod) == null) {
-          ContextServiceGrpc.getListLinksMethod = getListLinksMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListLinks"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListLinks"))
-              .build();
-        }
-      }
-    }
-    return getListLinksMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId,
-      context.ContextOuterClass.Link> getGetLinkMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetLink",
-      requestType = context.ContextOuterClass.LinkId.class,
-      responseType = context.ContextOuterClass.Link.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId,
-      context.ContextOuterClass.Link> getGetLinkMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link> getGetLinkMethod;
-    if ((getGetLinkMethod = ContextServiceGrpc.getGetLinkMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetLinkMethod = ContextServiceGrpc.getGetLinkMethod) == null) {
-          ContextServiceGrpc.getGetLinkMethod = getGetLinkMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetLink"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Link.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetLink"))
-              .build();
-        }
-      }
-    }
-    return getGetLinkMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Link,
-      context.ContextOuterClass.LinkId> getSetLinkMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetLink",
-      requestType = context.ContextOuterClass.Link.class,
-      responseType = context.ContextOuterClass.LinkId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Link,
-      context.ContextOuterClass.LinkId> getSetLinkMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId> getSetLinkMethod;
-    if ((getSetLinkMethod = ContextServiceGrpc.getSetLinkMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSetLinkMethod = ContextServiceGrpc.getSetLinkMethod) == null) {
-          ContextServiceGrpc.getSetLinkMethod = getSetLinkMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetLink"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Link.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetLink"))
-              .build();
-        }
-      }
-    }
-    return getSetLinkMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId,
-      context.ContextOuterClass.Empty> getRemoveLinkMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveLink",
-      requestType = context.ContextOuterClass.LinkId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId,
-      context.ContextOuterClass.Empty> getRemoveLinkMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty> getRemoveLinkMethod;
-    if ((getRemoveLinkMethod = ContextServiceGrpc.getRemoveLinkMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getRemoveLinkMethod = ContextServiceGrpc.getRemoveLinkMethod) == null) {
-          ContextServiceGrpc.getRemoveLinkMethod = getRemoveLinkMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveLink"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveLink"))
-              .build();
-        }
-      }
-    }
-    return getRemoveLinkMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetLinkEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.LinkEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod;
-    if ((getGetLinkEventsMethod = ContextServiceGrpc.getGetLinkEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetLinkEventsMethod = ContextServiceGrpc.getGetLinkEventsMethod) == null) {
-          ContextServiceGrpc.getGetLinkEventsMethod = getGetLinkEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetLinkEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.LinkEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetLinkEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetLinkEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListServiceIds",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.ServiceIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod;
-    if ((getListServiceIdsMethod = ContextServiceGrpc.getListServiceIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListServiceIdsMethod = ContextServiceGrpc.getListServiceIdsMethod) == null) {
-          ContextServiceGrpc.getListServiceIdsMethod = getListServiceIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListServiceIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListServiceIds"))
-              .build();
-        }
-      }
-    }
-    return getListServiceIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.ServiceList> getListServicesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListServices",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.ServiceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.ServiceList> getListServicesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList> getListServicesMethod;
-    if ((getListServicesMethod = ContextServiceGrpc.getListServicesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListServicesMethod = ContextServiceGrpc.getListServicesMethod) == null) {
-          ContextServiceGrpc.getListServicesMethod = getListServicesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListServices"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListServices"))
-              .build();
-        }
-      }
-    }
-    return getListServicesMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.Service> getGetServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetService",
-      requestType = context.ContextOuterClass.ServiceId.class,
-      responseType = context.ContextOuterClass.Service.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.Service> getGetServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service> getGetServiceMethod;
-    if ((getGetServiceMethod = ContextServiceGrpc.getGetServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetServiceMethod = ContextServiceGrpc.getGetServiceMethod) == null) {
-          ContextServiceGrpc.getGetServiceMethod = getGetServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Service.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetService"))
-              .build();
-        }
-      }
-    }
-    return getGetServiceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.ServiceId> getSetServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetService",
-      requestType = context.ContextOuterClass.Service.class,
-      responseType = context.ContextOuterClass.ServiceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.ServiceId> getSetServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getSetServiceMethod;
-    if ((getSetServiceMethod = ContextServiceGrpc.getSetServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSetServiceMethod = ContextServiceGrpc.getSetServiceMethod) == null) {
-          ContextServiceGrpc.getSetServiceMethod = getSetServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Service.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetService"))
-              .build();
-        }
-      }
-    }
-    return getSetServiceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.ServiceId> getUnsetServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "UnsetService",
-      requestType = context.ContextOuterClass.Service.class,
-      responseType = context.ContextOuterClass.ServiceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Service,
-      context.ContextOuterClass.ServiceId> getUnsetServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getUnsetServiceMethod;
-    if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) {
-          ContextServiceGrpc.getUnsetServiceMethod = getUnsetServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Service.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetService"))
-              .build();
-        }
-      }
-    }
-    return getUnsetServiceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.Empty> getRemoveServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveService",
-      requestType = context.ContextOuterClass.ServiceId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.Empty> getRemoveServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty> getRemoveServiceMethod;
-    if ((getRemoveServiceMethod = ContextServiceGrpc.getRemoveServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getRemoveServiceMethod = ContextServiceGrpc.getRemoveServiceMethod) == null) {
-          ContextServiceGrpc.getRemoveServiceMethod = getRemoveServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveService"))
-              .build();
-        }
-      }
-    }
-    return getRemoveServiceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetServiceEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.ServiceEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod;
-    if ((getGetServiceEventsMethod = ContextServiceGrpc.getGetServiceEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetServiceEventsMethod = ContextServiceGrpc.getGetServiceEventsMethod) == null) {
-          ContextServiceGrpc.getGetServiceEventsMethod = getGetServiceEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetServiceEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetServiceEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetServiceEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter,
-      context.ContextOuterClass.ServiceList> getSelectServiceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectService",
-      requestType = context.ContextOuterClass.ServiceFilter.class,
-      responseType = context.ContextOuterClass.ServiceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter,
-      context.ContextOuterClass.ServiceList> getSelectServiceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList> getSelectServiceMethod;
-    if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
-          ContextServiceGrpc.getSelectServiceMethod = getSelectServiceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectService"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectService"))
-              .build();
-        }
-      }
-    }
-    return getSelectServiceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.SliceIdList> getListSliceIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListSliceIds",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.SliceIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.SliceIdList> getListSliceIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList> getListSliceIdsMethod;
-    if ((getListSliceIdsMethod = ContextServiceGrpc.getListSliceIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListSliceIdsMethod = ContextServiceGrpc.getListSliceIdsMethod) == null) {
-          ContextServiceGrpc.getListSliceIdsMethod = getListSliceIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListSliceIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListSliceIds"))
-              .build();
-        }
-      }
-    }
-    return getListSliceIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.SliceList> getListSlicesMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListSlices",
-      requestType = context.ContextOuterClass.ContextId.class,
-      responseType = context.ContextOuterClass.SliceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId,
-      context.ContextOuterClass.SliceList> getListSlicesMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList> getListSlicesMethod;
-    if ((getListSlicesMethod = ContextServiceGrpc.getListSlicesMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListSlicesMethod = ContextServiceGrpc.getListSlicesMethod) == null) {
-          ContextServiceGrpc.getListSlicesMethod = getListSlicesMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListSlices"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ContextId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListSlices"))
-              .build();
-        }
-      }
-    }
-    return getListSlicesMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId,
-      context.ContextOuterClass.Slice> getGetSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetSlice",
-      requestType = context.ContextOuterClass.SliceId.class,
-      responseType = context.ContextOuterClass.Slice.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId,
-      context.ContextOuterClass.Slice> getGetSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice> getGetSliceMethod;
-    if ((getGetSliceMethod = ContextServiceGrpc.getGetSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetSliceMethod = ContextServiceGrpc.getGetSliceMethod) == null) {
-          ContextServiceGrpc.getGetSliceMethod = getGetSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Slice.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetSlice"))
-              .build();
-        }
-      }
-    }
-    return getGetSliceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Slice,
-      context.ContextOuterClass.SliceId> getSetSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetSlice",
-      requestType = context.ContextOuterClass.Slice.class,
-      responseType = context.ContextOuterClass.SliceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Slice,
-      context.ContextOuterClass.SliceId> getSetSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getSetSliceMethod;
-    if ((getSetSliceMethod = ContextServiceGrpc.getSetSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSetSliceMethod = ContextServiceGrpc.getSetSliceMethod) == null) {
-          ContextServiceGrpc.getSetSliceMethod = getSetSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Slice.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetSlice"))
-              .build();
-        }
-      }
-    }
-    return getSetSliceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Slice,
-      context.ContextOuterClass.SliceId> getUnsetSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "UnsetSlice",
-      requestType = context.ContextOuterClass.Slice.class,
-      responseType = context.ContextOuterClass.SliceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Slice,
-      context.ContextOuterClass.SliceId> getUnsetSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getUnsetSliceMethod;
-    if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) {
-          ContextServiceGrpc.getUnsetSliceMethod = getUnsetSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Slice.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetSlice"))
-              .build();
-        }
-      }
-    }
-    return getUnsetSliceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId,
-      context.ContextOuterClass.Empty> getRemoveSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveSlice",
-      requestType = context.ContextOuterClass.SliceId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId,
-      context.ContextOuterClass.Empty> getRemoveSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty> getRemoveSliceMethod;
-    if ((getRemoveSliceMethod = ContextServiceGrpc.getRemoveSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getRemoveSliceMethod = ContextServiceGrpc.getRemoveSliceMethod) == null) {
-          ContextServiceGrpc.getRemoveSliceMethod = getRemoveSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveSlice"))
-              .build();
-        }
-      }
-    }
-    return getRemoveSliceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetSliceEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.SliceEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod;
-    if ((getGetSliceEventsMethod = ContextServiceGrpc.getGetSliceEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetSliceEventsMethod = ContextServiceGrpc.getGetSliceEventsMethod) == null) {
-          ContextServiceGrpc.getGetSliceEventsMethod = getGetSliceEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSliceEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetSliceEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetSliceEventsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter,
-      context.ContextOuterClass.SliceList> getSelectSliceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SelectSlice",
-      requestType = context.ContextOuterClass.SliceFilter.class,
-      responseType = context.ContextOuterClass.SliceList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter,
-      context.ContextOuterClass.SliceList> getSelectSliceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList> getSelectSliceMethod;
-    if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
-          ContextServiceGrpc.getSelectSliceMethod = getSelectSliceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectSlice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceFilter.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.SliceList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectSlice"))
-              .build();
-        }
-      }
-    }
-    return getSelectSliceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListConnectionIds",
-      requestType = context.ContextOuterClass.ServiceId.class,
-      responseType = context.ContextOuterClass.ConnectionIdList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod;
-    if ((getListConnectionIdsMethod = ContextServiceGrpc.getListConnectionIdsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListConnectionIdsMethod = ContextServiceGrpc.getListConnectionIdsMethod) == null) {
-          ContextServiceGrpc.getListConnectionIdsMethod = getListConnectionIdsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListConnectionIds"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionIdList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListConnectionIds"))
-              .build();
-        }
-      }
-    }
-    return getListConnectionIdsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.ConnectionList> getListConnectionsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ListConnections",
-      requestType = context.ContextOuterClass.ServiceId.class,
-      responseType = context.ContextOuterClass.ConnectionList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId,
-      context.ContextOuterClass.ConnectionList> getListConnectionsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList> getListConnectionsMethod;
-    if ((getListConnectionsMethod = ContextServiceGrpc.getListConnectionsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getListConnectionsMethod = ContextServiceGrpc.getListConnectionsMethod) == null) {
-          ContextServiceGrpc.getListConnectionsMethod = getListConnectionsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListConnections"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ServiceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionList.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListConnections"))
-              .build();
-        }
-      }
-    }
-    return getListConnectionsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId,
-      context.ContextOuterClass.Connection> getGetConnectionMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetConnection",
-      requestType = context.ContextOuterClass.ConnectionId.class,
-      responseType = context.ContextOuterClass.Connection.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId,
-      context.ContextOuterClass.Connection> getGetConnectionMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection> getGetConnectionMethod;
-    if ((getGetConnectionMethod = ContextServiceGrpc.getGetConnectionMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetConnectionMethod = ContextServiceGrpc.getGetConnectionMethod) == null) {
-          ContextServiceGrpc.getGetConnectionMethod = getGetConnectionMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetConnection"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Connection.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetConnection"))
-              .build();
-        }
-      }
-    }
-    return getGetConnectionMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Connection,
-      context.ContextOuterClass.ConnectionId> getSetConnectionMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetConnection",
-      requestType = context.ContextOuterClass.Connection.class,
-      responseType = context.ContextOuterClass.ConnectionId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Connection,
-      context.ContextOuterClass.ConnectionId> getSetConnectionMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId> getSetConnectionMethod;
-    if ((getSetConnectionMethod = ContextServiceGrpc.getSetConnectionMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getSetConnectionMethod = ContextServiceGrpc.getSetConnectionMethod) == null) {
-          ContextServiceGrpc.getSetConnectionMethod = getSetConnectionMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetConnection"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Connection.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionId.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetConnection"))
-              .build();
-        }
-      }
-    }
-    return getSetConnectionMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId,
-      context.ContextOuterClass.Empty> getRemoveConnectionMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "RemoveConnection",
-      requestType = context.ContextOuterClass.ConnectionId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId,
-      context.ContextOuterClass.Empty> getRemoveConnectionMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty> getRemoveConnectionMethod;
-    if ((getRemoveConnectionMethod = ContextServiceGrpc.getRemoveConnectionMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getRemoveConnectionMethod = ContextServiceGrpc.getRemoveConnectionMethod) == null) {
-          ContextServiceGrpc.getRemoveConnectionMethod = getRemoveConnectionMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveConnection"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveConnection"))
-              .build();
-        }
-      }
-    }
-    return getRemoveConnectionMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetConnectionEvents",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = context.ContextOuterClass.ConnectionEvent.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod;
-    if ((getGetConnectionEventsMethod = ContextServiceGrpc.getGetConnectionEventsMethod) == null) {
-      synchronized (ContextServiceGrpc.class) {
-        if ((getGetConnectionEventsMethod = ContextServiceGrpc.getGetConnectionEventsMethod) == null) {
-          ContextServiceGrpc.getGetConnectionEventsMethod = getGetConnectionEventsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetConnectionEvents"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.ConnectionEvent.getDefaultInstance()))
-              .setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetConnectionEvents"))
-              .build();
-        }
-      }
-    }
-    return getGetConnectionEventsMethod;
-  }
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static ContextServiceStub newStub(io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ContextServiceStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ContextServiceStub>() {
-        @java.lang.Override
-        public ContextServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ContextServiceStub(channel, callOptions);
-        }
-      };
-    return ContextServiceStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static ContextServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ContextServiceBlockingStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ContextServiceBlockingStub>() {
-        @java.lang.Override
-        public ContextServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ContextServiceBlockingStub(channel, callOptions);
-        }
-      };
-    return ContextServiceBlockingStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary calls on the service
-   */
-  public static ContextServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ContextServiceFutureStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ContextServiceFutureStub>() {
-        @java.lang.Override
-        public ContextServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ContextServiceFutureStub(channel, callOptions);
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListEndPointNamesMethod = ContextServiceGrpc.getListEndPointNamesMethod) == null) {
+                    ContextServiceGrpc.getListEndPointNamesMethod = getListEndPointNamesMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListEndPointNames")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.EndPointIdList.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.EndPointNameList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListEndPointNames")).build();
+                }
+            }
         }
-      };
-    return ContextServiceFutureStub.newStub(factory, channel);
-  }
+        return getListEndPointNamesMethod;
+    }
 
-  /**
-   */
-  public static abstract class ContextServiceImplBase implements io.grpc.BindableService {
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList> getListLinkIdsMethod;
 
-    /**
-     */
-    public void listContextIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver);
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListLinkIds", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.LinkIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList> getListLinkIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList> getListLinkIdsMethod;
+        if ((getListLinkIdsMethod = ContextServiceGrpc.getListLinkIdsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListLinkIdsMethod = ContextServiceGrpc.getListLinkIdsMethod) == null) {
+                    ContextServiceGrpc.getListLinkIdsMethod = getListLinkIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListLinkIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListLinkIds")).build();
+                }
+            }
+        }
+        return getListLinkIdsMethod;
     }
 
-    /**
-     */
-    public void listContexts(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList> getListLinksMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListLinks", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.LinkList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList> getListLinksMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList> getListLinksMethod;
+        if ((getListLinksMethod = ContextServiceGrpc.getListLinksMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListLinksMethod = ContextServiceGrpc.getListLinksMethod) == null) {
+                    ContextServiceGrpc.getListLinksMethod = getListLinksMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListLinks")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListLinks")).build();
+                }
+            }
+        }
+        return getListLinksMethod;
     }
 
-    /**
-     */
-    public void getContext(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link> getGetLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.Link.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link> getGetLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link> getGetLinkMethod;
+        if ((getGetLinkMethod = ContextServiceGrpc.getGetLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetLinkMethod = ContextServiceGrpc.getGetLinkMethod) == null) {
+                    ContextServiceGrpc.getGetLinkMethod = getGetLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Link.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetLink")).build();
+                }
+            }
+        }
+        return getGetLinkMethod;
     }
 
-    /**
-     */
-    public void setContext(context.ContextOuterClass.Context request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId> getSetLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetLink", requestType = context.ContextOuterClass.Link.class, responseType = context.ContextOuterClass.LinkId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId> getSetLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId> getSetLinkMethod;
+        if ((getSetLinkMethod = ContextServiceGrpc.getSetLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetLinkMethod = ContextServiceGrpc.getSetLinkMethod) == null) {
+                    ContextServiceGrpc.getSetLinkMethod = getSetLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Link.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetLink")).build();
+                }
+            }
+        }
+        return getSetLinkMethod;
     }
 
-    /**
-     */
-    public void removeContext(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty> getRemoveLinkMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveLink", requestType = context.ContextOuterClass.LinkId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty> getRemoveLinkMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty> getRemoveLinkMethod;
+        if ((getRemoveLinkMethod = ContextServiceGrpc.getRemoveLinkMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveLinkMethod = ContextServiceGrpc.getRemoveLinkMethod) == null) {
+                    ContextServiceGrpc.getRemoveLinkMethod = getRemoveLinkMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveLink")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveLink")).build();
+                }
+            }
+        }
+        return getRemoveLinkMethod;
     }
 
-    /**
-     */
-    public void getContextEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetLinkEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.LinkEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent> getGetLinkEventsMethod;
+        if ((getGetLinkEventsMethod = ContextServiceGrpc.getGetLinkEventsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetLinkEventsMethod = ContextServiceGrpc.getGetLinkEventsMethod) == null) {
+                    ContextServiceGrpc.getGetLinkEventsMethod = getGetLinkEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetLinkEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.LinkEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetLinkEvents")).build();
+                }
+            }
+        }
+        return getGetLinkEventsMethod;
     }
 
-    /**
-     */
-    public void listTopologyIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListServiceIds", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.ServiceIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList> getListServiceIdsMethod;
+        if ((getListServiceIdsMethod = ContextServiceGrpc.getListServiceIdsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListServiceIdsMethod = ContextServiceGrpc.getListServiceIdsMethod) == null) {
+                    ContextServiceGrpc.getListServiceIdsMethod = getListServiceIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListServiceIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListServiceIds")).build();
+                }
+            }
+        }
+        return getListServiceIdsMethod;
     }
 
-    /**
-     */
-    public void listTopologies(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList> getListServicesMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListServices", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.ServiceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList> getListServicesMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList> getListServicesMethod;
+        if ((getListServicesMethod = ContextServiceGrpc.getListServicesMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListServicesMethod = ContextServiceGrpc.getListServicesMethod) == null) {
+                    ContextServiceGrpc.getListServicesMethod = getListServicesMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListServices")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListServices")).build();
+                }
+            }
+        }
+        return getListServicesMethod;
     }
 
-    /**
-     */
-    public void getTopology(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service> getGetServiceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetService", requestType = context.ContextOuterClass.ServiceId.class, responseType = context.ContextOuterClass.Service.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service> getGetServiceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service> getGetServiceMethod;
+        if ((getGetServiceMethod = ContextServiceGrpc.getGetServiceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetServiceMethod = ContextServiceGrpc.getGetServiceMethod) == null) {
+                    ContextServiceGrpc.getGetServiceMethod = getGetServiceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetService")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Service.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetService")).build();
+                }
+            }
+        }
+        return getGetServiceMethod;
     }
 
-    /**
-     */
-    public void getTopologyDetails(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getSetServiceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetService", requestType = context.ContextOuterClass.Service.class, responseType = context.ContextOuterClass.ServiceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getSetServiceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getSetServiceMethod;
+        if ((getSetServiceMethod = ContextServiceGrpc.getSetServiceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetServiceMethod = ContextServiceGrpc.getSetServiceMethod) == null) {
+                    ContextServiceGrpc.getSetServiceMethod = getSetServiceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetService")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Service.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetService")).build();
+                }
+            }
+        }
+        return getSetServiceMethod;
     }
 
-    /**
-     */
-    public void setTopology(context.ContextOuterClass.Topology request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getUnsetServiceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "UnsetService", requestType = context.ContextOuterClass.Service.class, responseType = context.ContextOuterClass.ServiceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getUnsetServiceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId> getUnsetServiceMethod;
+        if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getUnsetServiceMethod = ContextServiceGrpc.getUnsetServiceMethod) == null) {
+                    ContextServiceGrpc.getUnsetServiceMethod = getUnsetServiceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetService")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Service.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetService")).build();
+                }
+            }
+        }
+        return getUnsetServiceMethod;
     }
 
-    /**
-     */
-    public void removeTopology(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty> getRemoveServiceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveService", requestType = context.ContextOuterClass.ServiceId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty> getRemoveServiceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty> getRemoveServiceMethod;
+        if ((getRemoveServiceMethod = ContextServiceGrpc.getRemoveServiceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveServiceMethod = ContextServiceGrpc.getRemoveServiceMethod) == null) {
+                    ContextServiceGrpc.getRemoveServiceMethod = getRemoveServiceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveService")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveService")).build();
+                }
+            }
+        }
+        return getRemoveServiceMethod;
     }
 
-    /**
-     */
-    public void getTopologyEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetServiceEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.ServiceEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent> getGetServiceEventsMethod;
+        if ((getGetServiceEventsMethod = ContextServiceGrpc.getGetServiceEventsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetServiceEventsMethod = ContextServiceGrpc.getGetServiceEventsMethod) == null) {
+                    ContextServiceGrpc.getGetServiceEventsMethod = getGetServiceEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetServiceEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetServiceEvents")).build();
+                }
+            }
+        }
+        return getGetServiceEventsMethod;
     }
 
-    /**
-     */
-    public void listDeviceIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList> getSelectServiceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectService", requestType = context.ContextOuterClass.ServiceFilter.class, responseType = context.ContextOuterClass.ServiceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList> getSelectServiceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList> getSelectServiceMethod;
+        if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSelectServiceMethod = ContextServiceGrpc.getSelectServiceMethod) == null) {
+                    ContextServiceGrpc.getSelectServiceMethod = getSelectServiceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectService")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceFilter.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectService")).build();
+                }
+            }
+        }
+        return getSelectServiceMethod;
     }
 
-    /**
-     */
-    public void listDevices(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList> getListSliceIdsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListSliceIds", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.SliceIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList> getListSliceIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList> getListSliceIdsMethod;
+        if ((getListSliceIdsMethod = ContextServiceGrpc.getListSliceIdsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListSliceIdsMethod = ContextServiceGrpc.getListSliceIdsMethod) == null) {
+                    ContextServiceGrpc.getListSliceIdsMethod = getListSliceIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListSliceIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListSliceIds")).build();
+                }
+            }
+        }
+        return getListSliceIdsMethod;
     }
 
-    /**
-     */
-    public void getDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList> getListSlicesMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListSlices", requestType = context.ContextOuterClass.ContextId.class, responseType = context.ContextOuterClass.SliceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList> getListSlicesMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList> getListSlicesMethod;
+        if ((getListSlicesMethod = ContextServiceGrpc.getListSlicesMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListSlicesMethod = ContextServiceGrpc.getListSlicesMethod) == null) {
+                    ContextServiceGrpc.getListSlicesMethod = getListSlicesMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListSlices")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ContextId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListSlices")).build();
+                }
+            }
+        }
+        return getListSlicesMethod;
     }
 
-    /**
-     */
-    public void setDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice> getGetSliceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetSlice", requestType = context.ContextOuterClass.SliceId.class, responseType = context.ContextOuterClass.Slice.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice> getGetSliceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice> getGetSliceMethod;
+        if ((getGetSliceMethod = ContextServiceGrpc.getGetSliceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetSliceMethod = ContextServiceGrpc.getGetSliceMethod) == null) {
+                    ContextServiceGrpc.getGetSliceMethod = getGetSliceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSlice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Slice.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetSlice")).build();
+                }
+            }
+        }
+        return getGetSliceMethod;
     }
 
-    /**
-     */
-    public void removeDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getSetSliceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetSlice", requestType = context.ContextOuterClass.Slice.class, responseType = context.ContextOuterClass.SliceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getSetSliceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getSetSliceMethod;
+        if ((getSetSliceMethod = ContextServiceGrpc.getSetSliceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetSliceMethod = ContextServiceGrpc.getSetSliceMethod) == null) {
+                    ContextServiceGrpc.getSetSliceMethod = getSetSliceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetSlice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Slice.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetSlice")).build();
+                }
+            }
+        }
+        return getSetSliceMethod;
     }
 
-    /**
-     */
-    public void getDeviceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getUnsetSliceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "UnsetSlice", requestType = context.ContextOuterClass.Slice.class, responseType = context.ContextOuterClass.SliceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getUnsetSliceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId> getUnsetSliceMethod;
+        if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getUnsetSliceMethod = ContextServiceGrpc.getUnsetSliceMethod) == null) {
+                    ContextServiceGrpc.getUnsetSliceMethod = getUnsetSliceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "UnsetSlice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Slice.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("UnsetSlice")).build();
+                }
+            }
+        }
+        return getUnsetSliceMethod;
     }
 
-    /**
-     */
-    public void selectDevice(context.ContextOuterClass.DeviceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty> getRemoveSliceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveSlice", requestType = context.ContextOuterClass.SliceId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty> getRemoveSliceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty> getRemoveSliceMethod;
+        if ((getRemoveSliceMethod = ContextServiceGrpc.getRemoveSliceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveSliceMethod = ContextServiceGrpc.getRemoveSliceMethod) == null) {
+                    ContextServiceGrpc.getRemoveSliceMethod = getRemoveSliceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveSlice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveSlice")).build();
+                }
+            }
+        }
+        return getRemoveSliceMethod;
     }
 
-    /**
-     */
-    public void listEndPointNames(context.ContextOuterClass.EndPointIdList request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetSliceEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.SliceEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent> getGetSliceEventsMethod;
+        if ((getGetSliceEventsMethod = ContextServiceGrpc.getGetSliceEventsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetSliceEventsMethod = ContextServiceGrpc.getGetSliceEventsMethod) == null) {
+                    ContextServiceGrpc.getGetSliceEventsMethod = getGetSliceEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSliceEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetSliceEvents")).build();
+                }
+            }
+        }
+        return getGetSliceEventsMethod;
     }
 
-    /**
-     */
-    public void listLinkIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList> getSelectSliceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SelectSlice", requestType = context.ContextOuterClass.SliceFilter.class, responseType = context.ContextOuterClass.SliceList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList> getSelectSliceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList> getSelectSliceMethod;
+        if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSelectSliceMethod = ContextServiceGrpc.getSelectSliceMethod) == null) {
+                    ContextServiceGrpc.getSelectSliceMethod = getSelectSliceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SelectSlice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceFilter.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.SliceList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SelectSlice")).build();
+                }
+            }
+        }
+        return getSelectSliceMethod;
     }
 
-    /**
-     */
-    public void listLinks(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListConnectionIds", requestType = context.ContextOuterClass.ServiceId.class, responseType = context.ContextOuterClass.ConnectionIdList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList> getListConnectionIdsMethod;
+        if ((getListConnectionIdsMethod = ContextServiceGrpc.getListConnectionIdsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListConnectionIdsMethod = ContextServiceGrpc.getListConnectionIdsMethod) == null) {
+                    ContextServiceGrpc.getListConnectionIdsMethod = getListConnectionIdsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListConnectionIds")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionIdList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListConnectionIds")).build();
+                }
+            }
+        }
+        return getListConnectionIdsMethod;
     }
 
-    /**
-     */
-    public void getLink(context.ContextOuterClass.LinkId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList> getListConnectionsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ListConnections", requestType = context.ContextOuterClass.ServiceId.class, responseType = context.ContextOuterClass.ConnectionList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList> getListConnectionsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList> getListConnectionsMethod;
+        if ((getListConnectionsMethod = ContextServiceGrpc.getListConnectionsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getListConnectionsMethod = ContextServiceGrpc.getListConnectionsMethod) == null) {
+                    ContextServiceGrpc.getListConnectionsMethod = getListConnectionsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListConnections")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ServiceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionList.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("ListConnections")).build();
+                }
+            }
+        }
+        return getListConnectionsMethod;
     }
 
-    /**
-     */
-    public void setLink(context.ContextOuterClass.Link request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection> getGetConnectionMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetConnection", requestType = context.ContextOuterClass.ConnectionId.class, responseType = context.ContextOuterClass.Connection.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection> getGetConnectionMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection> getGetConnectionMethod;
+        if ((getGetConnectionMethod = ContextServiceGrpc.getGetConnectionMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetConnectionMethod = ContextServiceGrpc.getGetConnectionMethod) == null) {
+                    ContextServiceGrpc.getGetConnectionMethod = getGetConnectionMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetConnection")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Connection.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetConnection")).build();
+                }
+            }
+        }
+        return getGetConnectionMethod;
     }
 
-    /**
-     */
-    public void removeLink(context.ContextOuterClass.LinkId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId> getSetConnectionMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetConnection", requestType = context.ContextOuterClass.Connection.class, responseType = context.ContextOuterClass.ConnectionId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId> getSetConnectionMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId> getSetConnectionMethod;
+        if ((getSetConnectionMethod = ContextServiceGrpc.getSetConnectionMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getSetConnectionMethod = ContextServiceGrpc.getSetConnectionMethod) == null) {
+                    ContextServiceGrpc.getSetConnectionMethod = getSetConnectionMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetConnection")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Connection.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionId.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("SetConnection")).build();
+                }
+            }
+        }
+        return getSetConnectionMethod;
     }
 
-    /**
-     */
-    public void getLinkEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty> getRemoveConnectionMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "RemoveConnection", requestType = context.ContextOuterClass.ConnectionId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty> getRemoveConnectionMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty> getRemoveConnectionMethod;
+        if ((getRemoveConnectionMethod = ContextServiceGrpc.getRemoveConnectionMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getRemoveConnectionMethod = ContextServiceGrpc.getRemoveConnectionMethod) == null) {
+                    ContextServiceGrpc.getRemoveConnectionMethod = getRemoveConnectionMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "RemoveConnection")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("RemoveConnection")).build();
+                }
+            }
+        }
+        return getRemoveConnectionMethod;
     }
 
-    /**
-     */
-    public void listServiceIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver);
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetConnectionEvents", requestType = context.ContextOuterClass.Empty.class, responseType = context.ContextOuterClass.ConnectionEvent.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent> getGetConnectionEventsMethod;
+        if ((getGetConnectionEventsMethod = ContextServiceGrpc.getGetConnectionEventsMethod) == null) {
+            synchronized (ContextServiceGrpc.class) {
+                if ((getGetConnectionEventsMethod = ContextServiceGrpc.getGetConnectionEventsMethod) == null) {
+                    ContextServiceGrpc.getGetConnectionEventsMethod = getGetConnectionEventsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetConnectionEvents")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.ConnectionEvent.getDefaultInstance())).setSchemaDescriptor(new ContextServiceMethodDescriptorSupplier("GetConnectionEvents")).build();
+                }
+            }
+        }
+        return getGetConnectionEventsMethod;
     }
 
     /**
+     * Creates a new async stub that supports all call types for the service
      */
-    public void listServices(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver);
+    public static ContextServiceStub newStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ContextServiceStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ContextServiceStub>() {
+
+            @java.lang.Override
+            public ContextServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ContextServiceStub(channel, callOptions);
+            }
+        };
+        return ContextServiceStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new blocking-style stub that supports unary and streaming output calls on the service
      */
-    public void getService(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver);
+    public static ContextServiceBlockingStub newBlockingStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ContextServiceBlockingStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ContextServiceBlockingStub>() {
+
+            @java.lang.Override
+            public ContextServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ContextServiceBlockingStub(channel, callOptions);
+            }
+        };
+        return ContextServiceBlockingStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new ListenableFuture-style stub that supports unary calls on the service
      */
-    public void setService(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver);
+    public static ContextServiceFutureStub newFutureStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ContextServiceFutureStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ContextServiceFutureStub>() {
+
+            @java.lang.Override
+            public ContextServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ContextServiceFutureStub(channel, callOptions);
+            }
+        };
+        return ContextServiceFutureStub.newStub(factory, channel);
     }
 
     /**
      */
-    public void unsetService(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver);
-    }
+    public interface AsyncService {
 
-    /**
-     */
-    public void removeService(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getServiceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListContextsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void selectService(context.ContextOuterClass.ServiceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listSliceIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetContextMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listSlices(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver);
-    }
+        /**
+         */
+        default void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveContextMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getSlice(context.ContextOuterClass.SliceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetContextEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setSlice(context.ContextOuterClass.Slice request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologyIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void unsetSlice(context.ContextOuterClass.Slice request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTopologiesMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeSlice(context.ContextOuterClass.SliceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getSliceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyDetailsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void selectSlice(context.ContextOuterClass.SliceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
-    }
+        /**
+         */
+        default void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetTopologyMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listConnectionIds(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveTopologyMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listConnections(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetTopologyEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getConnection(context.ContextOuterClass.ConnectionId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDeviceIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setConnection(context.ContextOuterClass.Connection request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver);
-    }
+        /**
+         */
+        default void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListDevicesMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeConnection(context.ContextOuterClass.ConnectionId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getConnectionEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver);
-    }
-
-    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            getListContextIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.ContextIdList>(
-                  this, METHODID_LIST_CONTEXT_IDS)))
-          .addMethod(
-            getListContextsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.ContextList>(
-                  this, METHODID_LIST_CONTEXTS)))
-          .addMethod(
-            getGetContextMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.Context>(
-                  this, METHODID_GET_CONTEXT)))
-          .addMethod(
-            getSetContextMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Context,
-                context.ContextOuterClass.ContextId>(
-                  this, METHODID_SET_CONTEXT)))
-          .addMethod(
-            getRemoveContextMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_CONTEXT)))
-          .addMethod(
-            getGetContextEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.ContextEvent>(
-                  this, METHODID_GET_CONTEXT_EVENTS)))
-          .addMethod(
-            getListTopologyIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.TopologyIdList>(
-                  this, METHODID_LIST_TOPOLOGY_IDS)))
-          .addMethod(
-            getListTopologiesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.TopologyList>(
-                  this, METHODID_LIST_TOPOLOGIES)))
-          .addMethod(
-            getGetTopologyMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.TopologyId,
-                context.ContextOuterClass.Topology>(
-                  this, METHODID_GET_TOPOLOGY)))
-          .addMethod(
-            getGetTopologyDetailsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.TopologyId,
-                context.ContextOuterClass.TopologyDetails>(
-                  this, METHODID_GET_TOPOLOGY_DETAILS)))
-          .addMethod(
-            getSetTopologyMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Topology,
-                context.ContextOuterClass.TopologyId>(
-                  this, METHODID_SET_TOPOLOGY)))
-          .addMethod(
-            getRemoveTopologyMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.TopologyId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_TOPOLOGY)))
-          .addMethod(
-            getGetTopologyEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.TopologyEvent>(
-                  this, METHODID_GET_TOPOLOGY_EVENTS)))
-          .addMethod(
-            getListDeviceIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.DeviceIdList>(
-                  this, METHODID_LIST_DEVICE_IDS)))
-          .addMethod(
-            getListDevicesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.DeviceList>(
-                  this, METHODID_LIST_DEVICES)))
-          .addMethod(
-            getGetDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                context.ContextOuterClass.Device>(
-                  this, METHODID_GET_DEVICE)))
-          .addMethod(
-            getSetDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Device,
-                context.ContextOuterClass.DeviceId>(
-                  this, METHODID_SET_DEVICE)))
-          .addMethod(
-            getRemoveDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_DEVICE)))
-          .addMethod(
-            getGetDeviceEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.DeviceEvent>(
-                  this, METHODID_GET_DEVICE_EVENTS)))
-          .addMethod(
-            getSelectDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceFilter,
-                context.ContextOuterClass.DeviceList>(
-                  this, METHODID_SELECT_DEVICE)))
-          .addMethod(
-            getListEndPointNamesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.EndPointIdList,
-                context.ContextOuterClass.EndPointNameList>(
-                  this, METHODID_LIST_END_POINT_NAMES)))
-          .addMethod(
-            getListLinkIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.LinkIdList>(
-                  this, METHODID_LIST_LINK_IDS)))
-          .addMethod(
-            getListLinksMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.LinkList>(
-                  this, METHODID_LIST_LINKS)))
-          .addMethod(
-            getGetLinkMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.LinkId,
-                context.ContextOuterClass.Link>(
-                  this, METHODID_GET_LINK)))
-          .addMethod(
-            getSetLinkMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Link,
-                context.ContextOuterClass.LinkId>(
-                  this, METHODID_SET_LINK)))
-          .addMethod(
-            getRemoveLinkMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.LinkId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_LINK)))
-          .addMethod(
-            getGetLinkEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.LinkEvent>(
-                  this, METHODID_GET_LINK_EVENTS)))
-          .addMethod(
-            getListServiceIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.ServiceIdList>(
-                  this, METHODID_LIST_SERVICE_IDS)))
-          .addMethod(
-            getListServicesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.ServiceList>(
-                  this, METHODID_LIST_SERVICES)))
-          .addMethod(
-            getGetServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceId,
-                context.ContextOuterClass.Service>(
-                  this, METHODID_GET_SERVICE)))
-          .addMethod(
-            getSetServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Service,
-                context.ContextOuterClass.ServiceId>(
-                  this, METHODID_SET_SERVICE)))
-          .addMethod(
-            getUnsetServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Service,
-                context.ContextOuterClass.ServiceId>(
-                  this, METHODID_UNSET_SERVICE)))
-          .addMethod(
-            getRemoveServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_SERVICE)))
-          .addMethod(
-            getGetServiceEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.ServiceEvent>(
-                  this, METHODID_GET_SERVICE_EVENTS)))
-          .addMethod(
-            getSelectServiceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceFilter,
-                context.ContextOuterClass.ServiceList>(
-                  this, METHODID_SELECT_SERVICE)))
-          .addMethod(
-            getListSliceIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.SliceIdList>(
-                  this, METHODID_LIST_SLICE_IDS)))
-          .addMethod(
-            getListSlicesMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ContextId,
-                context.ContextOuterClass.SliceList>(
-                  this, METHODID_LIST_SLICES)))
-          .addMethod(
-            getGetSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.SliceId,
-                context.ContextOuterClass.Slice>(
-                  this, METHODID_GET_SLICE)))
-          .addMethod(
-            getSetSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Slice,
-                context.ContextOuterClass.SliceId>(
-                  this, METHODID_SET_SLICE)))
-          .addMethod(
-            getUnsetSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Slice,
-                context.ContextOuterClass.SliceId>(
-                  this, METHODID_UNSET_SLICE)))
-          .addMethod(
-            getRemoveSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.SliceId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_SLICE)))
-          .addMethod(
-            getGetSliceEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.SliceEvent>(
-                  this, METHODID_GET_SLICE_EVENTS)))
-          .addMethod(
-            getSelectSliceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.SliceFilter,
-                context.ContextOuterClass.SliceList>(
-                  this, METHODID_SELECT_SLICE)))
-          .addMethod(
-            getListConnectionIdsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceId,
-                context.ContextOuterClass.ConnectionIdList>(
-                  this, METHODID_LIST_CONNECTION_IDS)))
-          .addMethod(
-            getListConnectionsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ServiceId,
-                context.ContextOuterClass.ConnectionList>(
-                  this, METHODID_LIST_CONNECTIONS)))
-          .addMethod(
-            getGetConnectionMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ConnectionId,
-                context.ContextOuterClass.Connection>(
-                  this, METHODID_GET_CONNECTION)))
-          .addMethod(
-            getSetConnectionMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Connection,
-                context.ContextOuterClass.ConnectionId>(
-                  this, METHODID_SET_CONNECTION)))
-          .addMethod(
-            getRemoveConnectionMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.ConnectionId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_REMOVE_CONNECTION)))
-          .addMethod(
-            getGetConnectionEventsMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                context.ContextOuterClass.ConnectionEvent>(
-                  this, METHODID_GET_CONNECTION_EVENTS)))
-          .build();
-    }
-  }
-
-  /**
-   */
-  public static final class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub<ContextServiceStub> {
-    private ContextServiceStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected ContextServiceStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ContextServiceStub(channel, callOptions);
-    }
+        /**
+         */
+        default void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listContextIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListContextIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listContexts(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListContextsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetDeviceEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getContext(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetContextMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setContext(context.ContextOuterClass.Context request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetContextMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListEndPointNamesMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeContext(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveContextMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinkIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getContextEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetContextEventsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListLinksMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listTopologyIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListTopologyIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listTopologies(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListTopologiesMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetLinkMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getTopology(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveLinkMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getTopologyDetails(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetLinkEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setTopology(context.ContextOuterClass.Topology request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetTopologyMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServiceIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeTopology(context.ContextOuterClass.TopologyId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveTopologyMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListServicesMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getTopologyEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetTopologyEventsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listDeviceIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListDeviceIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetServiceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listDevices(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListDevicesMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetServiceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveServiceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetServiceEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectServiceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getDeviceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetDeviceEventsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSliceIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void selectDevice(context.ContextOuterClass.DeviceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListSlicesMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listEndPointNames(context.ContextOuterClass.EndPointIdList request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listLinkIds(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListLinkIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetSliceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listLinks(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListLinksMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getUnsetSliceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getLink(context.ContextOuterClass.LinkId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetLinkMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveSliceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setLink(context.ContextOuterClass.Link request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetLinkMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSliceEventsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void removeLink(context.ContextOuterClass.LinkId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveLinkMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSelectSliceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getLinkEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetLinkEventsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionIdsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listServiceIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListServiceIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListConnectionsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void listServices(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListServicesMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getService(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetServiceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetConnectionMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setService(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetServiceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getRemoveConnectionMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void unsetService(context.ContextOuterClass.Service request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request, responseObserver);
+        /**
+         */
+        default void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetConnectionEventsMethod(), responseObserver);
+        }
     }
 
     /**
+     * Base class for the server implementation of the service ContextService.
      */
-    public void removeService(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveServiceMethod(), getCallOptions()), request, responseObserver);
-    }
+    public static abstract class ContextServiceImplBase implements io.grpc.BindableService, AsyncService {
 
-    /**
-     */
-    public void getServiceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetServiceEventsMethod(), getCallOptions()), request, responseObserver);
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return ContextServiceGrpc.bindService(this);
+        }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service ContextService.
      */
-    public void selectService(context.ContextOuterClass.ServiceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request, responseObserver);
-    }
+    public static class ContextServiceStub extends io.grpc.stub.AbstractAsyncStub<ContextServiceStub> {
 
-    /**
-     */
-    public void listSliceIds(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListSliceIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        private ContextServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public void listSlices(context.ContextOuterClass.ContextId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListSlicesMethod(), getCallOptions()), request, responseObserver);
-    }
+        @java.lang.Override
+        protected ContextServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ContextServiceStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public void getSlice(context.ContextOuterClass.SliceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetSliceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void listContextIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListContextIdsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void setSlice(context.ContextOuterClass.Slice request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetSliceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void listContexts(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListContextsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void unsetSlice(context.ContextOuterClass.Slice request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Context> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetContextMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void removeSlice(context.ContextOuterClass.SliceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveSliceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void setContext(context.ContextOuterClass.Context request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetContextMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getSliceEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetSliceEventsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void removeContext(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveContextMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void selectSlice(context.ContextOuterClass.SliceFilter request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getContextEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetContextEventsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void listConnectionIds(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListConnectionIdsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void listTopologyIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListTopologyIdsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void listConnections(context.ContextOuterClass.ServiceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getListConnectionsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void listTopologies(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListTopologiesMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getConnection(context.ContextOuterClass.ConnectionId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetConnectionMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void setConnection(context.ContextOuterClass.Connection request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetConnectionMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getTopologyDetails(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void removeConnection(context.ContextOuterClass.ConnectionId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void setTopology(context.ContextOuterClass.Topology request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetTopologyMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getConnectionEvents(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetConnectionEventsMethod(), getCallOptions()), request, responseObserver);
-    }
-  }
+        /**
+         */
+        public void removeTopology(context.ContextOuterClass.TopologyId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveTopologyMethod(), getCallOptions()), request, responseObserver);
+        }
 
-  /**
-   */
-  public static final class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ContextServiceBlockingStub> {
-    private ContextServiceBlockingStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        public void getTopologyEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetTopologyEventsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    @java.lang.Override
-    protected ContextServiceBlockingStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ContextServiceBlockingStub(channel, callOptions);
-    }
+        /**
+         */
+        public void listDeviceIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListDeviceIdsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.ContextIdList listContextIds(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListContextIdsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void listDevices(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListDevicesMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.ContextList listContexts(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListContextsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Device> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Context getContext(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetContextMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void setDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.ContextId setContext(context.ContextOuterClass.Context request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetContextMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void removeDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeContext(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveContextMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getDeviceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetDeviceEventsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.ContextEvent> getContextEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetContextEventsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void selectDevice(context.ContextOuterClass.DeviceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.TopologyIdList listTopologyIds(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListTopologyIdsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void listEndPointNames(context.ContextOuterClass.EndPointIdList request, io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.TopologyList listTopologies(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListTopologiesMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void listLinkIds(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListLinkIdsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Topology getTopology(context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetTopologyMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void listLinks(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListLinksMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.TopologyDetails getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetTopologyDetailsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Link> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetLinkMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.TopologyId setTopology(context.ContextOuterClass.Topology request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetTopologyMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void setLink(context.ContextOuterClass.Link request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetLinkMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeTopology(context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveTopologyMethod(), getCallOptions(), request);
+        /**
+         */
+        public void removeLink(context.ContextOuterClass.LinkId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveLinkMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getLinkEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetLinkEventsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listServiceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListServiceIdsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listServices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListServicesMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Service> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetServiceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetServiceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void unsetService(context.ContextOuterClass.Service request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void removeService(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveServiceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getServiceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetServiceEventsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void selectService(context.ContextOuterClass.ServiceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listSliceIds(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListSliceIdsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listSlices(context.ContextOuterClass.ContextId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListSlicesMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetSliceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetSliceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void unsetSlice(context.ContextOuterClass.Slice request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void removeSlice(context.ContextOuterClass.SliceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveSliceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getSliceEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetSliceEventsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void selectSlice(context.ContextOuterClass.SliceFilter request, io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listConnectionIds(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListConnectionIdsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void listConnections(context.ContextOuterClass.ServiceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getListConnectionsMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetConnectionMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void setConnection(context.ContextOuterClass.Connection request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetConnectionMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void removeConnection(context.ContextOuterClass.ConnectionId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request, responseObserver);
+        }
+
+        /**
+         */
+        public void getConnectionEvents(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetConnectionEventsMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service ContextService.
      */
-    public java.util.Iterator<context.ContextOuterClass.TopologyEvent> getTopologyEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetTopologyEventsMethod(), getCallOptions(), request);
+    public static class ContextServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ContextServiceBlockingStub> {
+
+        private ContextServiceBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
+
+        @java.lang.Override
+        protected ContextServiceBlockingStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ContextServiceBlockingStub(channel, callOptions);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ContextIdList listContextIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListContextIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ContextList listContexts(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListContextsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Context getContext(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetContextMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ContextId setContext(context.ContextOuterClass.Context request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetContextMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeContext(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveContextMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetContextEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.TopologyIdList listTopologyIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListTopologyIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.TopologyList listTopologies(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListTopologiesMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Topology getTopology(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetTopologyMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.TopologyDetails getTopologyDetails(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetTopologyDetailsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.TopologyId setTopology(context.ContextOuterClass.Topology request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetTopologyMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeTopology(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveTopologyMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetTopologyEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceIdList listDeviceIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListDeviceIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceList listDevices(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListDevicesMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Device getDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceId setDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetDeviceEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceList selectDevice(context.ContextOuterClass.DeviceFilter request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.EndPointNameList listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListEndPointNamesMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.LinkIdList listLinkIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListLinkIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.LinkList listLinks(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListLinksMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Link getLink(context.ContextOuterClass.LinkId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.LinkId setLink(context.ContextOuterClass.Link request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeLink(context.ContextOuterClass.LinkId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveLinkMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetLinkEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ServiceIdList listServiceIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListServiceIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ServiceList listServices(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListServicesMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Service getService(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetServiceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ServiceId setService(context.ContextOuterClass.Service request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetServiceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ServiceId unsetService(context.ContextOuterClass.Service request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getUnsetServiceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeService(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveServiceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetServiceEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ServiceList selectService(context.ContextOuterClass.ServiceFilter request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectServiceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.SliceIdList listSliceIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListSliceIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.SliceList listSlices(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListSlicesMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Slice getSlice(context.ContextOuterClass.SliceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetSliceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.SliceId setSlice(context.ContextOuterClass.Slice request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetSliceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.SliceId unsetSlice(context.ContextOuterClass.Slice request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getUnsetSliceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeSlice(context.ContextOuterClass.SliceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveSliceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetSliceEventsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.SliceList selectSlice(context.ContextOuterClass.SliceFilter request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSelectSliceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ConnectionIdList listConnectionIds(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListConnectionIdsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ConnectionList listConnections(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getListConnectionsMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Connection getConnection(context.ContextOuterClass.ConnectionId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetConnectionMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.ConnectionId setConnection(context.ContextOuterClass.Connection request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetConnectionMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty removeConnection(context.ContextOuterClass.ConnectionId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getRemoveConnectionMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public java.util.Iterator<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetConnectionEventsMethod(), getCallOptions(), request);
+        }
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service ContextService.
      */
-    public context.ContextOuterClass.DeviceIdList listDeviceIds(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListDeviceIdsMethod(), getCallOptions(), request);
-    }
+    public static class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ContextServiceFutureStub> {
+
+        private ContextServiceFutureStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
+
+        @java.lang.Override
+        protected ContextServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ContextServiceFutureStub(channel, callOptions);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListContextIdsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListContextsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetContextMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetContextMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveContextMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListTopologyIdsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListTopologiesMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetTopologyMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveTopologyMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListDeviceIdsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListDevicesMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListLinkIdsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListLinksMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveLinkMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListServiceIdsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListServicesMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetServiceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetServiceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveServiceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceList listDevices(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListDevicesMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListSliceIdsMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Device getDevice(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListSlicesMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceId setDevice(context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetSliceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeDevice(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetSliceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.DeviceEvent> getDeviceEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetDeviceEventsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceList selectDevice(context.ContextOuterClass.DeviceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveSliceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.EndPointNameList listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListEndPointNamesMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.LinkIdList listLinkIds(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListLinkIdsMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListConnectionIdsMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.LinkList listLinks(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListLinksMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getListConnectionsMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Link getLink(context.ContextOuterClass.LinkId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetLinkMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetConnectionMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.LinkId setLink(context.ContextOuterClass.Link request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetLinkMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetConnectionMethod(), getCallOptions()), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeLink(context.ContextOuterClass.LinkId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveLinkMethod(), getCallOptions(), request);
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request);
+        }
     }
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.LinkEvent> getLinkEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetLinkEventsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_CONTEXT_IDS = 0;
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceIdList listServiceIds(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListServiceIdsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_CONTEXTS = 1;
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceList listServices(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListServicesMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_CONTEXT = 2;
 
-    /**
-     */
-    public context.ContextOuterClass.Service getService(context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetServiceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_SET_CONTEXT = 3;
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceId setService(context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetServiceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_REMOVE_CONTEXT = 4;
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceId unsetService(context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getUnsetServiceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_CONTEXT_EVENTS = 5;
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeService(context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveServiceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_TOPOLOGY_IDS = 6;
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.ServiceEvent> getServiceEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetServiceEventsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_TOPOLOGIES = 7;
 
-    /**
-     */
-    public context.ContextOuterClass.ServiceList selectService(context.ContextOuterClass.ServiceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectServiceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_TOPOLOGY = 8;
 
-    /**
-     */
-    public context.ContextOuterClass.SliceIdList listSliceIds(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListSliceIdsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_TOPOLOGY_DETAILS = 9;
 
-    /**
-     */
-    public context.ContextOuterClass.SliceList listSlices(context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListSlicesMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_SET_TOPOLOGY = 10;
 
-    /**
-     */
-    public context.ContextOuterClass.Slice getSlice(context.ContextOuterClass.SliceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetSliceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_REMOVE_TOPOLOGY = 11;
 
-    /**
-     */
-    public context.ContextOuterClass.SliceId setSlice(context.ContextOuterClass.Slice request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetSliceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_TOPOLOGY_EVENTS = 12;
 
-    /**
-     */
-    public context.ContextOuterClass.SliceId unsetSlice(context.ContextOuterClass.Slice request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getUnsetSliceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_DEVICE_IDS = 13;
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeSlice(context.ContextOuterClass.SliceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveSliceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_DEVICES = 14;
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.SliceEvent> getSliceEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetSliceEventsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_DEVICE = 15;
 
-    /**
-     */
-    public context.ContextOuterClass.SliceList selectSlice(context.ContextOuterClass.SliceFilter request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSelectSliceMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_SET_DEVICE = 16;
 
-    /**
-     */
-    public context.ContextOuterClass.ConnectionIdList listConnectionIds(context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListConnectionIdsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_REMOVE_DEVICE = 17;
 
-    /**
-     */
-    public context.ContextOuterClass.ConnectionList listConnections(context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getListConnectionsMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_GET_DEVICE_EVENTS = 18;
 
-    /**
-     */
-    public context.ContextOuterClass.Connection getConnection(context.ContextOuterClass.ConnectionId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetConnectionMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_SELECT_DEVICE = 19;
 
-    /**
-     */
-    public context.ContextOuterClass.ConnectionId setConnection(context.ContextOuterClass.Connection request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetConnectionMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_END_POINT_NAMES = 20;
 
-    /**
-     */
-    public context.ContextOuterClass.Empty removeConnection(context.ContextOuterClass.ConnectionId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getRemoveConnectionMethod(), getCallOptions(), request);
-    }
+    private static final int METHODID_LIST_LINK_IDS = 21;
 
-    /**
-     */
-    public java.util.Iterator<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetConnectionEventsMethod(), getCallOptions(), request);
-    }
-  }
+    private static final int METHODID_LIST_LINKS = 22;
 
-  /**
-   */
-  public static final class ContextServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ContextServiceFutureStub> {
-    private ContextServiceFutureStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+    private static final int METHODID_GET_LINK = 23;
 
-    @java.lang.Override
-    protected ContextServiceFutureStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ContextServiceFutureStub(channel, callOptions);
-    }
+    private static final int METHODID_SET_LINK = 24;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextIdList> listContextIds(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListContextIdsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_REMOVE_LINK = 25;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextList> listContexts(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListContextsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_LINK_EVENTS = 26;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Context> getContext(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetContextMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_SERVICE_IDS = 27;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ContextId> setContext(
-        context.ContextOuterClass.Context request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetContextMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_SERVICES = 28;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeContext(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveContextMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_SERVICE = 29;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyIdList> listTopologyIds(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListTopologyIdsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_SET_SERVICE = 30;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyList> listTopologies(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListTopologiesMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_UNSET_SERVICE = 31;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Topology> getTopology(
-        context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetTopologyMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_REMOVE_SERVICE = 32;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyDetails> getTopologyDetails(
-        context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetTopologyDetailsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_SERVICE_EVENTS = 33;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.TopologyId> setTopology(
-        context.ContextOuterClass.Topology request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetTopologyMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_SELECT_SERVICE = 34;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeTopology(
-        context.ContextOuterClass.TopologyId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveTopologyMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_SLICE_IDS = 35;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceIdList> listDeviceIds(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListDeviceIdsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_SLICES = 36;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceList> listDevices(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListDevicesMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_SLICE = 37;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Device> getDevice(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetDeviceMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_SET_SLICE = 38;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> setDevice(
-        context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetDeviceMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_UNSET_SLICE = 39;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeDevice(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveDeviceMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_REMOVE_SLICE = 40;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceList> selectDevice(
-        context.ContextOuterClass.DeviceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectDeviceMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_SLICE_EVENTS = 41;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.EndPointNameList> listEndPointNames(
-        context.ContextOuterClass.EndPointIdList request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListEndPointNamesMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_SELECT_SLICE = 42;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkIdList> listLinkIds(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListLinkIdsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_CONNECTION_IDS = 43;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkList> listLinks(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListLinksMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_LIST_CONNECTIONS = 44;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Link> getLink(
-        context.ContextOuterClass.LinkId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetLinkMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_CONNECTION = 45;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.LinkId> setLink(
-        context.ContextOuterClass.Link request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetLinkMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_SET_CONNECTION = 46;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeLink(
-        context.ContextOuterClass.LinkId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveLinkMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_REMOVE_CONNECTION = 47;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceIdList> listServiceIds(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListServiceIdsMethod(), getCallOptions()), request);
-    }
+    private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceList> listServices(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListServicesMethod(), getCallOptions()), request);
-    }
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Service> getService(
-        context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetServiceMethod(), getCallOptions()), request);
-    }
+        private final AsyncService serviceImpl;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceId> setService(
-        context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetServiceMethod(), getCallOptions()), request);
-    }
+        private final int methodId;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceId> unsetService(
-        context.ContextOuterClass.Service request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getUnsetServiceMethod(), getCallOptions()), request);
-    }
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeService(
-        context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveServiceMethod(), getCallOptions()), request);
-    }
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                case METHODID_LIST_CONTEXT_IDS:
+                    serviceImpl.listContextIds((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_CONTEXTS:
+                    serviceImpl.listContexts((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList>) responseObserver);
+                    break;
+                case METHODID_GET_CONTEXT:
+                    serviceImpl.getContext((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Context>) responseObserver);
+                    break;
+                case METHODID_SET_CONTEXT:
+                    serviceImpl.setContext((context.ContextOuterClass.Context) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_CONTEXT:
+                    serviceImpl.removeContext((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_CONTEXT_EVENTS:
+                    serviceImpl.getContextEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent>) responseObserver);
+                    break;
+                case METHODID_LIST_TOPOLOGY_IDS:
+                    serviceImpl.listTopologyIds((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_TOPOLOGIES:
+                    serviceImpl.listTopologies((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList>) responseObserver);
+                    break;
+                case METHODID_GET_TOPOLOGY:
+                    serviceImpl.getTopology((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology>) responseObserver);
+                    break;
+                case METHODID_GET_TOPOLOGY_DETAILS:
+                    serviceImpl.getTopologyDetails((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver);
+                    break;
+                case METHODID_SET_TOPOLOGY:
+                    serviceImpl.setTopology((context.ContextOuterClass.Topology) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_TOPOLOGY:
+                    serviceImpl.removeTopology((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_TOPOLOGY_EVENTS:
+                    serviceImpl.getTopologyEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent>) responseObserver);
+                    break;
+                case METHODID_LIST_DEVICE_IDS:
+                    serviceImpl.listDeviceIds((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_DEVICES:
+                    serviceImpl.listDevices((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver);
+                    break;
+                case METHODID_GET_DEVICE:
+                    serviceImpl.getDevice((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Device>) responseObserver);
+                    break;
+                case METHODID_SET_DEVICE:
+                    serviceImpl.setDevice((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_DEVICE:
+                    serviceImpl.removeDevice((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_DEVICE_EVENTS:
+                    serviceImpl.getDeviceEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent>) responseObserver);
+                    break;
+                case METHODID_SELECT_DEVICE:
+                    serviceImpl.selectDevice((context.ContextOuterClass.DeviceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver);
+                    break;
+                case METHODID_LIST_END_POINT_NAMES:
+                    serviceImpl.listEndPointNames((context.ContextOuterClass.EndPointIdList) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver);
+                    break;
+                case METHODID_LIST_LINK_IDS:
+                    serviceImpl.listLinkIds((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_LINKS:
+                    serviceImpl.listLinks((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList>) responseObserver);
+                    break;
+                case METHODID_GET_LINK:
+                    serviceImpl.getLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Link>) responseObserver);
+                    break;
+                case METHODID_SET_LINK:
+                    serviceImpl.setLink((context.ContextOuterClass.Link) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_LINK:
+                    serviceImpl.removeLink((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_LINK_EVENTS:
+                    serviceImpl.getLinkEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent>) responseObserver);
+                    break;
+                case METHODID_LIST_SERVICE_IDS:
+                    serviceImpl.listServiceIds((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_SERVICES:
+                    serviceImpl.listServices((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver);
+                    break;
+                case METHODID_GET_SERVICE:
+                    serviceImpl.getService((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Service>) responseObserver);
+                    break;
+                case METHODID_SET_SERVICE:
+                    serviceImpl.setService((context.ContextOuterClass.Service) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver);
+                    break;
+                case METHODID_UNSET_SERVICE:
+                    serviceImpl.unsetService((context.ContextOuterClass.Service) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_SERVICE:
+                    serviceImpl.removeService((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_SERVICE_EVENTS:
+                    serviceImpl.getServiceEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent>) responseObserver);
+                    break;
+                case METHODID_SELECT_SERVICE:
+                    serviceImpl.selectService((context.ContextOuterClass.ServiceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver);
+                    break;
+                case METHODID_LIST_SLICE_IDS:
+                    serviceImpl.listSliceIds((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_SLICES:
+                    serviceImpl.listSlices((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver);
+                    break;
+                case METHODID_GET_SLICE:
+                    serviceImpl.getSlice((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice>) responseObserver);
+                    break;
+                case METHODID_SET_SLICE:
+                    serviceImpl.setSlice((context.ContextOuterClass.Slice) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver);
+                    break;
+                case METHODID_UNSET_SLICE:
+                    serviceImpl.unsetSlice((context.ContextOuterClass.Slice) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_SLICE:
+                    serviceImpl.removeSlice((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_SLICE_EVENTS:
+                    serviceImpl.getSliceEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent>) responseObserver);
+                    break;
+                case METHODID_SELECT_SLICE:
+                    serviceImpl.selectSlice((context.ContextOuterClass.SliceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver);
+                    break;
+                case METHODID_LIST_CONNECTION_IDS:
+                    serviceImpl.listConnectionIds((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver);
+                    break;
+                case METHODID_LIST_CONNECTIONS:
+                    serviceImpl.listConnections((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList>) responseObserver);
+                    break;
+                case METHODID_GET_CONNECTION:
+                    serviceImpl.getConnection((context.ContextOuterClass.ConnectionId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection>) responseObserver);
+                    break;
+                case METHODID_SET_CONNECTION:
+                    serviceImpl.setConnection((context.ContextOuterClass.Connection) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId>) responseObserver);
+                    break;
+                case METHODID_REMOVE_CONNECTION:
+                    serviceImpl.removeConnection((context.ContextOuterClass.ConnectionId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_CONNECTION_EVENTS:
+                    serviceImpl.getConnectionEvents((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver);
+                    break;
+                default:
+                    throw new AssertionError();
+            }
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ServiceList> selectService(
-        context.ContextOuterClass.ServiceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectServiceMethod(), getCallOptions()), request);
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                default:
+                    throw new AssertionError();
+            }
+        }
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceIdList> listSliceIds(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListSliceIdsMethod(), getCallOptions()), request);
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getListContextIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(service, METHODID_LIST_CONTEXT_IDS))).addMethod(getListContextsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(service, METHODID_LIST_CONTEXTS))).addMethod(getGetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(service, METHODID_GET_CONTEXT))).addMethod(getSetContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(service, METHODID_SET_CONTEXT))).addMethod(getRemoveContextMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONTEXT))).addMethod(getGetContextEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(service, METHODID_GET_CONTEXT_EVENTS))).addMethod(getListTopologyIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(service, METHODID_LIST_TOPOLOGY_IDS))).addMethod(getListTopologiesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(service, METHODID_LIST_TOPOLOGIES))).addMethod(getGetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(service, METHODID_GET_TOPOLOGY))).addMethod(getGetTopologyDetailsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(service, METHODID_GET_TOPOLOGY_DETAILS))).addMethod(getSetTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(service, METHODID_SET_TOPOLOGY))).addMethod(getRemoveTopologyMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_TOPOLOGY))).addMethod(getGetTopologyEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(service, METHODID_GET_TOPOLOGY_EVENTS))).addMethod(getListDeviceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(service, METHODID_LIST_DEVICE_IDS))).addMethod(getListDevicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(service, METHODID_LIST_DEVICES))).addMethod(getGetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(service, METHODID_GET_DEVICE))).addMethod(getSetDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_SET_DEVICE))).addMethod(getRemoveDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_DEVICE))).addMethod(getGetDeviceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(service, METHODID_GET_DEVICE_EVENTS))).addMethod(getSelectDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(service, METHODID_SELECT_DEVICE))).addMethod(getListEndPointNamesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(service, METHODID_LIST_END_POINT_NAMES))).addMethod(getListLinkIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(service, METHODID_LIST_LINK_IDS))).addMethod(getListLinksMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(service, METHODID_LIST_LINKS))).addMethod(getGetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(service, METHODID_GET_LINK))).addMethod(getSetLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(service, METHODID_SET_LINK))).addMethod(getRemoveLinkMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_LINK))).addMethod(getGetLinkEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(service, METHODID_GET_LINK_EVENTS))).addMethod(getListServiceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(service, METHODID_LIST_SERVICE_IDS))).addMethod(getListServicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(service, METHODID_LIST_SERVICES))).addMethod(getGetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(service, METHODID_GET_SERVICE))).addMethod(getSetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_SET_SERVICE))).addMethod(getUnsetServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(service, METHODID_UNSET_SERVICE))).addMethod(getRemoveServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SERVICE))).addMethod(getGetServiceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(service, METHODID_GET_SERVICE_EVENTS))).addMethod(getSelectServiceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(service, METHODID_SELECT_SERVICE))).addMethod(getListSliceIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(service, METHODID_LIST_SLICE_IDS))).addMethod(getListSlicesMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(service, METHODID_LIST_SLICES))).addMethod(getGetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(service, METHODID_GET_SLICE))).addMethod(getSetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_SET_SLICE))).addMethod(getUnsetSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(service, METHODID_UNSET_SLICE))).addMethod(getRemoveSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_SLICE))).addMethod(getGetSliceEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(service, METHODID_GET_SLICE_EVENTS))).addMethod(getSelectSliceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(service, METHODID_SELECT_SLICE))).addMethod(getListConnectionIdsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(service, METHODID_LIST_CONNECTION_IDS))).addMethod(getListConnectionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(service, METHODID_LIST_CONNECTIONS))).addMethod(getGetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(service, METHODID_GET_CONNECTION))).addMethod(getSetConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(service, METHODID_SET_CONNECTION))).addMethod(getRemoveConnectionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(service, METHODID_REMOVE_CONNECTION))).addMethod(getGetConnectionEventsMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(service, METHODID_GET_CONNECTION_EVENTS))).build();
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceList> listSlices(
-        context.ContextOuterClass.ContextId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListSlicesMethod(), getCallOptions()), request);
-    }
+    private static abstract class ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Slice> getSlice(
-        context.ContextOuterClass.SliceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetSliceMethod(), getCallOptions()), request);
-    }
+        ContextServiceBaseDescriptorSupplier() {
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceId> setSlice(
-        context.ContextOuterClass.Slice request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetSliceMethod(), getCallOptions()), request);
-    }
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+            return context.ContextOuterClass.getDescriptor();
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceId> unsetSlice(
-        context.ContextOuterClass.Slice request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getUnsetSliceMethod(), getCallOptions()), request);
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+            return getFileDescriptor().findServiceByName("ContextService");
+        }
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeSlice(
-        context.ContextOuterClass.SliceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveSliceMethod(), getCallOptions()), request);
-    }
+    private static final class ContextServiceFileDescriptorSupplier extends ContextServiceBaseDescriptorSupplier {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.SliceList> selectSlice(
-        context.ContextOuterClass.SliceFilter request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSelectSliceMethod(), getCallOptions()), request);
+        ContextServiceFileDescriptorSupplier() {
+        }
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionIdList> listConnectionIds(
-        context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListConnectionIdsMethod(), getCallOptions()), request);
-    }
+    private static final class ContextServiceMethodDescriptorSupplier extends ContextServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionList> listConnections(
-        context.ContextOuterClass.ServiceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getListConnectionsMethod(), getCallOptions()), request);
-    }
+        private final String methodName;
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Connection> getConnection(
-        context.ContextOuterClass.ConnectionId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetConnectionMethod(), getCallOptions()), request);
-    }
+        ContextServiceMethodDescriptorSupplier(String methodName) {
+            this.methodName = methodName;
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.ConnectionId> setConnection(
-        context.ContextOuterClass.Connection request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetConnectionMethod(), getCallOptions()), request);
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+            return getServiceDescriptor().findMethodByName(methodName);
+        }
     }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> removeConnection(
-        context.ContextOuterClass.ConnectionId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getRemoveConnectionMethod(), getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_LIST_CONTEXT_IDS = 0;
-  private static final int METHODID_LIST_CONTEXTS = 1;
-  private static final int METHODID_GET_CONTEXT = 2;
-  private static final int METHODID_SET_CONTEXT = 3;
-  private static final int METHODID_REMOVE_CONTEXT = 4;
-  private static final int METHODID_GET_CONTEXT_EVENTS = 5;
-  private static final int METHODID_LIST_TOPOLOGY_IDS = 6;
-  private static final int METHODID_LIST_TOPOLOGIES = 7;
-  private static final int METHODID_GET_TOPOLOGY = 8;
-  private static final int METHODID_GET_TOPOLOGY_DETAILS = 9;
-  private static final int METHODID_SET_TOPOLOGY = 10;
-  private static final int METHODID_REMOVE_TOPOLOGY = 11;
-  private static final int METHODID_GET_TOPOLOGY_EVENTS = 12;
-  private static final int METHODID_LIST_DEVICE_IDS = 13;
-  private static final int METHODID_LIST_DEVICES = 14;
-  private static final int METHODID_GET_DEVICE = 15;
-  private static final int METHODID_SET_DEVICE = 16;
-  private static final int METHODID_REMOVE_DEVICE = 17;
-  private static final int METHODID_GET_DEVICE_EVENTS = 18;
-  private static final int METHODID_SELECT_DEVICE = 19;
-  private static final int METHODID_LIST_END_POINT_NAMES = 20;
-  private static final int METHODID_LIST_LINK_IDS = 21;
-  private static final int METHODID_LIST_LINKS = 22;
-  private static final int METHODID_GET_LINK = 23;
-  private static final int METHODID_SET_LINK = 24;
-  private static final int METHODID_REMOVE_LINK = 25;
-  private static final int METHODID_GET_LINK_EVENTS = 26;
-  private static final int METHODID_LIST_SERVICE_IDS = 27;
-  private static final int METHODID_LIST_SERVICES = 28;
-  private static final int METHODID_GET_SERVICE = 29;
-  private static final int METHODID_SET_SERVICE = 30;
-  private static final int METHODID_UNSET_SERVICE = 31;
-  private static final int METHODID_REMOVE_SERVICE = 32;
-  private static final int METHODID_GET_SERVICE_EVENTS = 33;
-  private static final int METHODID_SELECT_SERVICE = 34;
-  private static final int METHODID_LIST_SLICE_IDS = 35;
-  private static final int METHODID_LIST_SLICES = 36;
-  private static final int METHODID_GET_SLICE = 37;
-  private static final int METHODID_SET_SLICE = 38;
-  private static final int METHODID_UNSET_SLICE = 39;
-  private static final int METHODID_REMOVE_SLICE = 40;
-  private static final int METHODID_GET_SLICE_EVENTS = 41;
-  private static final int METHODID_SELECT_SLICE = 42;
-  private static final int METHODID_LIST_CONNECTION_IDS = 43;
-  private static final int METHODID_LIST_CONNECTIONS = 44;
-  private static final int METHODID_GET_CONNECTION = 45;
-  private static final int METHODID_SET_CONNECTION = 46;
-  private static final int METHODID_REMOVE_CONNECTION = 47;
-  private static final int METHODID_GET_CONNECTION_EVENTS = 48;
-
-  private static final class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final ContextServiceImplBase serviceImpl;
-    private final int methodId;
-
-    MethodHandlers(ContextServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_LIST_CONTEXT_IDS:
-          serviceImpl.listContextIds((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList>) responseObserver);
-          break;
-        case METHODID_LIST_CONTEXTS:
-          serviceImpl.listContexts((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList>) responseObserver);
-          break;
-        case METHODID_GET_CONTEXT:
-          serviceImpl.getContext((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Context>) responseObserver);
-          break;
-        case METHODID_SET_CONTEXT:
-          serviceImpl.setContext((context.ContextOuterClass.Context) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId>) responseObserver);
-          break;
-        case METHODID_REMOVE_CONTEXT:
-          serviceImpl.removeContext((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_CONTEXT_EVENTS:
-          serviceImpl.getContextEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent>) responseObserver);
-          break;
-        case METHODID_LIST_TOPOLOGY_IDS:
-          serviceImpl.listTopologyIds((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList>) responseObserver);
-          break;
-        case METHODID_LIST_TOPOLOGIES:
-          serviceImpl.listTopologies((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList>) responseObserver);
-          break;
-        case METHODID_GET_TOPOLOGY:
-          serviceImpl.getTopology((context.ContextOuterClass.TopologyId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology>) responseObserver);
-          break;
-        case METHODID_GET_TOPOLOGY_DETAILS:
-          serviceImpl.getTopologyDetails((context.ContextOuterClass.TopologyId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver);
-          break;
-        case METHODID_SET_TOPOLOGY:
-          serviceImpl.setTopology((context.ContextOuterClass.Topology) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver);
-          break;
-        case METHODID_REMOVE_TOPOLOGY:
-          serviceImpl.removeTopology((context.ContextOuterClass.TopologyId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_TOPOLOGY_EVENTS:
-          serviceImpl.getTopologyEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent>) responseObserver);
-          break;
-        case METHODID_LIST_DEVICE_IDS:
-          serviceImpl.listDeviceIds((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList>) responseObserver);
-          break;
-        case METHODID_LIST_DEVICES:
-          serviceImpl.listDevices((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver);
-          break;
-        case METHODID_GET_DEVICE:
-          serviceImpl.getDevice((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Device>) responseObserver);
-          break;
-        case METHODID_SET_DEVICE:
-          serviceImpl.setDevice((context.ContextOuterClass.Device) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
-          break;
-        case METHODID_REMOVE_DEVICE:
-          serviceImpl.removeDevice((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_DEVICE_EVENTS:
-          serviceImpl.getDeviceEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent>) responseObserver);
-          break;
-        case METHODID_SELECT_DEVICE:
-          serviceImpl.selectDevice((context.ContextOuterClass.DeviceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver);
-          break;
-        case METHODID_LIST_END_POINT_NAMES:
-          serviceImpl.listEndPointNames((context.ContextOuterClass.EndPointIdList) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver);
-          break;
-        case METHODID_LIST_LINK_IDS:
-          serviceImpl.listLinkIds((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver);
-          break;
-        case METHODID_LIST_LINKS:
-          serviceImpl.listLinks((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList>) responseObserver);
-          break;
-        case METHODID_GET_LINK:
-          serviceImpl.getLink((context.ContextOuterClass.LinkId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Link>) responseObserver);
-          break;
-        case METHODID_SET_LINK:
-          serviceImpl.setLink((context.ContextOuterClass.Link) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId>) responseObserver);
-          break;
-        case METHODID_REMOVE_LINK:
-          serviceImpl.removeLink((context.ContextOuterClass.LinkId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_LINK_EVENTS:
-          serviceImpl.getLinkEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent>) responseObserver);
-          break;
-        case METHODID_LIST_SERVICE_IDS:
-          serviceImpl.listServiceIds((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList>) responseObserver);
-          break;
-        case METHODID_LIST_SERVICES:
-          serviceImpl.listServices((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver);
-          break;
-        case METHODID_GET_SERVICE:
-          serviceImpl.getService((context.ContextOuterClass.ServiceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Service>) responseObserver);
-          break;
-        case METHODID_SET_SERVICE:
-          serviceImpl.setService((context.ContextOuterClass.Service) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver);
-          break;
-        case METHODID_UNSET_SERVICE:
-          serviceImpl.unsetService((context.ContextOuterClass.Service) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver);
-          break;
-        case METHODID_REMOVE_SERVICE:
-          serviceImpl.removeService((context.ContextOuterClass.ServiceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_SERVICE_EVENTS:
-          serviceImpl.getServiceEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent>) responseObserver);
-          break;
-        case METHODID_SELECT_SERVICE:
-          serviceImpl.selectService((context.ContextOuterClass.ServiceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver);
-          break;
-        case METHODID_LIST_SLICE_IDS:
-          serviceImpl.listSliceIds((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver);
-          break;
-        case METHODID_LIST_SLICES:
-          serviceImpl.listSlices((context.ContextOuterClass.ContextId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver);
-          break;
-        case METHODID_GET_SLICE:
-          serviceImpl.getSlice((context.ContextOuterClass.SliceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice>) responseObserver);
-          break;
-        case METHODID_SET_SLICE:
-          serviceImpl.setSlice((context.ContextOuterClass.Slice) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver);
-          break;
-        case METHODID_UNSET_SLICE:
-          serviceImpl.unsetSlice((context.ContextOuterClass.Slice) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver);
-          break;
-        case METHODID_REMOVE_SLICE:
-          serviceImpl.removeSlice((context.ContextOuterClass.SliceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_SLICE_EVENTS:
-          serviceImpl.getSliceEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent>) responseObserver);
-          break;
-        case METHODID_SELECT_SLICE:
-          serviceImpl.selectSlice((context.ContextOuterClass.SliceFilter) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver);
-          break;
-        case METHODID_LIST_CONNECTION_IDS:
-          serviceImpl.listConnectionIds((context.ContextOuterClass.ServiceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver);
-          break;
-        case METHODID_LIST_CONNECTIONS:
-          serviceImpl.listConnections((context.ContextOuterClass.ServiceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList>) responseObserver);
-          break;
-        case METHODID_GET_CONNECTION:
-          serviceImpl.getConnection((context.ContextOuterClass.ConnectionId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection>) responseObserver);
-          break;
-        case METHODID_SET_CONNECTION:
-          serviceImpl.setConnection((context.ContextOuterClass.Connection) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId>) responseObserver);
-          break;
-        case METHODID_REMOVE_CONNECTION:
-          serviceImpl.removeConnection((context.ContextOuterClass.ConnectionId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_CONNECTION_EVENTS:
-          serviceImpl.getConnectionEvents((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
-    }
-  }
-
-  private static abstract class ContextServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
-    ContextServiceBaseDescriptorSupplier() {}
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
-      return context.ContextOuterClass.getDescriptor();
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
-      return getFileDescriptor().findServiceByName("ContextService");
-    }
-  }
-
-  private static final class ContextServiceFileDescriptorSupplier
-      extends ContextServiceBaseDescriptorSupplier {
-    ContextServiceFileDescriptorSupplier() {}
-  }
-
-  private static final class ContextServiceMethodDescriptorSupplier
-      extends ContextServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
-    private final String methodName;
-
-    ContextServiceMethodDescriptorSupplier(String methodName) {
-      this.methodName = methodName;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
-      return getServiceDescriptor().findMethodByName(methodName);
-    }
-  }
-
-  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
-
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    io.grpc.ServiceDescriptor result = serviceDescriptor;
-    if (result == null) {
-      synchronized (ContextServiceGrpc.class) {
-        result = serviceDescriptor;
+    private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+    public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+        io.grpc.ServiceDescriptor result = serviceDescriptor;
         if (result == null) {
-          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
-              .setSchemaDescriptor(new ContextServiceFileDescriptorSupplier())
-              .addMethod(getListContextIdsMethod())
-              .addMethod(getListContextsMethod())
-              .addMethod(getGetContextMethod())
-              .addMethod(getSetContextMethod())
-              .addMethod(getRemoveContextMethod())
-              .addMethod(getGetContextEventsMethod())
-              .addMethod(getListTopologyIdsMethod())
-              .addMethod(getListTopologiesMethod())
-              .addMethod(getGetTopologyMethod())
-              .addMethod(getGetTopologyDetailsMethod())
-              .addMethod(getSetTopologyMethod())
-              .addMethod(getRemoveTopologyMethod())
-              .addMethod(getGetTopologyEventsMethod())
-              .addMethod(getListDeviceIdsMethod())
-              .addMethod(getListDevicesMethod())
-              .addMethod(getGetDeviceMethod())
-              .addMethod(getSetDeviceMethod())
-              .addMethod(getRemoveDeviceMethod())
-              .addMethod(getGetDeviceEventsMethod())
-              .addMethod(getSelectDeviceMethod())
-              .addMethod(getListEndPointNamesMethod())
-              .addMethod(getListLinkIdsMethod())
-              .addMethod(getListLinksMethod())
-              .addMethod(getGetLinkMethod())
-              .addMethod(getSetLinkMethod())
-              .addMethod(getRemoveLinkMethod())
-              .addMethod(getGetLinkEventsMethod())
-              .addMethod(getListServiceIdsMethod())
-              .addMethod(getListServicesMethod())
-              .addMethod(getGetServiceMethod())
-              .addMethod(getSetServiceMethod())
-              .addMethod(getUnsetServiceMethod())
-              .addMethod(getRemoveServiceMethod())
-              .addMethod(getGetServiceEventsMethod())
-              .addMethod(getSelectServiceMethod())
-              .addMethod(getListSliceIdsMethod())
-              .addMethod(getListSlicesMethod())
-              .addMethod(getGetSliceMethod())
-              .addMethod(getSetSliceMethod())
-              .addMethod(getUnsetSliceMethod())
-              .addMethod(getRemoveSliceMethod())
-              .addMethod(getGetSliceEventsMethod())
-              .addMethod(getSelectSliceMethod())
-              .addMethod(getListConnectionIdsMethod())
-              .addMethod(getListConnectionsMethod())
-              .addMethod(getGetConnectionMethod())
-              .addMethod(getSetConnectionMethod())
-              .addMethod(getRemoveConnectionMethod())
-              .addMethod(getGetConnectionEventsMethod())
-              .build();
-        }
-      }
-    }
-    return result;
-  }
+            synchronized (ContextServiceGrpc.class) {
+                result = serviceDescriptor;
+                if (result == null) {
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ContextServiceFileDescriptorSupplier()).addMethod(getListContextIdsMethod()).addMethod(getListContextsMethod()).addMethod(getGetContextMethod()).addMethod(getSetContextMethod()).addMethod(getRemoveContextMethod()).addMethod(getGetContextEventsMethod()).addMethod(getListTopologyIdsMethod()).addMethod(getListTopologiesMethod()).addMethod(getGetTopologyMethod()).addMethod(getGetTopologyDetailsMethod()).addMethod(getSetTopologyMethod()).addMethod(getRemoveTopologyMethod()).addMethod(getGetTopologyEventsMethod()).addMethod(getListDeviceIdsMethod()).addMethod(getListDevicesMethod()).addMethod(getGetDeviceMethod()).addMethod(getSetDeviceMethod()).addMethod(getRemoveDeviceMethod()).addMethod(getGetDeviceEventsMethod()).addMethod(getSelectDeviceMethod()).addMethod(getListEndPointNamesMethod()).addMethod(getListLinkIdsMethod()).addMethod(getListLinksMethod()).addMethod(getGetLinkMethod()).addMethod(getSetLinkMethod()).addMethod(getRemoveLinkMethod()).addMethod(getGetLinkEventsMethod()).addMethod(getListServiceIdsMethod()).addMethod(getListServicesMethod()).addMethod(getGetServiceMethod()).addMethod(getSetServiceMethod()).addMethod(getUnsetServiceMethod()).addMethod(getRemoveServiceMethod()).addMethod(getGetServiceEventsMethod()).addMethod(getSelectServiceMethod()).addMethod(getListSliceIdsMethod()).addMethod(getListSlicesMethod()).addMethod(getGetSliceMethod()).addMethod(getSetSliceMethod()).addMethod(getUnsetSliceMethod()).addMethod(getRemoveSliceMethod()).addMethod(getGetSliceEventsMethod()).addMethod(getSelectSliceMethod()).addMethod(getListConnectionIdsMethod()).addMethod(getListConnectionsMethod()).addMethod(getGetConnectionMethod()).addMethod(getSetConnectionMethod()).addMethod(getRemoveConnectionMethod()).addMethod(getGetConnectionEventsMethod()).build();
+                }
+            }
+        }
+        return result;
+    }
 }
diff --git a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
index 45d853aa7771c71679f1b7a67051a478b3f73be8..247bf18aeacccd7e85733d56585722094b019915 100644
--- a/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
@@ -6,18 +6,18 @@ import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: context.proto")
-public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
-    private MutinyContextServiceGrpc() {}
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: context.proto")
+public final class MutinyContextServiceGrpc implements io.quarkus.grpc.MutinyGrpc {
+
+    private MutinyContextServiceGrpc() {
+    }
 
     public static MutinyContextServiceStub newMutinyStub(io.grpc.Channel channel) {
         return new MutinyContextServiceStub(channel);
     }
 
-    
-    public static final class MutinyContextServiceStub extends io.grpc.stub.AbstractStub<MutinyContextServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
+    public static class MutinyContextServiceStub extends io.grpc.stub.AbstractStub<MutinyContextServiceStub> implements io.quarkus.grpc.MutinyStub {
+
         private ContextServiceGrpc.ContextServiceStub delegateStub;
 
         private MutinyContextServiceStub(io.grpc.Channel channel) {
@@ -35,919 +35,523 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
             return new MutinyContextServiceStub(channel, callOptions);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listContextIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listContextIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listContexts);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listContexts);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getContext);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getContext);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setContext);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setContext);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeContext);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeContext);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listTopologyIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listTopologyIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listTopologies);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listTopologies);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getTopology);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getTopology);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getTopologyDetails);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getTopologyDetails);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setTopology);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setTopology);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeTopology);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeTopology);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listDeviceIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listDeviceIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listDevices);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listDevices);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listEndPointNames);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listEndPointNames);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listLinkIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listLinkIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listLinks);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listLinks);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getLink);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getLink);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setLink);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setLink);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeLink);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeLink);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listServiceIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listServiceIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listServices);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listServices);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getService);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getService);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setService);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setService);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::unsetService);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::unsetService);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeService);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeService);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectService);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectService);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listSliceIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listSliceIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listSlices);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listSlices);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getSlice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getSlice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setSlice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setSlice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::unsetSlice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::unsetSlice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeSlice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeSlice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::selectSlice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::selectSlice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listConnectionIds);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listConnectionIds);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::listConnections);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::listConnections);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getConnection);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getConnection);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setConnection);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setConnection);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::removeConnection);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::removeConnection);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getContextEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getContextEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getTopologyEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getTopologyEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getDeviceEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getDeviceEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getLinkEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getLinkEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getServiceEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getServiceEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getSliceEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getSliceEvents);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getConnectionEvents);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getConnectionEvents);
         }
-
     }
 
-    
     public static abstract class ContextServiceImplBase implements io.grpc.BindableService {
 
         private String compression;
+
         /**
-        * Set whether the server will try to use a compressed response.
-        *
-        * @param compression the compression, e.g {@code gzip}
-        */
+         * Set whether the server will try to use a compressed response.
+         *
+         * @param compression the compression, e.g {@code gzip}
+         */
         public ContextServiceImplBase withCompression(String compression) {
-        this.compression = compression;
-        return this;
+            this.compression = compression;
+            return this;
         }
 
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextIdList> listContextIds(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextList> listContexts(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Context> getContext(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ContextId> setContext(context.ContextOuterClass.Context request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeContext(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyIdList> listTopologyIds(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyList> listTopologies(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Topology> getTopology(context.ContextOuterClass.TopologyId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyDetails> getTopologyDetails(context.ContextOuterClass.TopologyId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.TopologyId> setTopology(context.ContextOuterClass.Topology request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeTopology(context.ContextOuterClass.TopologyId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceIdList> listDeviceIds(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> listDevices(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Device> getDevice(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> setDevice(context.ContextOuterClass.Device request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeDevice(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceList> selectDevice(context.ContextOuterClass.DeviceFilter request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.EndPointNameList> listEndPointNames(context.ContextOuterClass.EndPointIdList request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkIdList> listLinkIds(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkList> listLinks(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Link> getLink(context.ContextOuterClass.LinkId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.LinkId> setLink(context.ContextOuterClass.Link request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeLink(context.ContextOuterClass.LinkId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceIdList> listServiceIds(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> listServices(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Service> getService(context.ContextOuterClass.ServiceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> setService(context.ContextOuterClass.Service request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceId> unsetService(context.ContextOuterClass.Service request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeService(context.ContextOuterClass.ServiceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ServiceList> selectService(context.ContextOuterClass.ServiceFilter request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceIdList> listSliceIds(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> listSlices(context.ContextOuterClass.ContextId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Slice> getSlice(context.ContextOuterClass.SliceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> setSlice(context.ContextOuterClass.Slice request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceId> unsetSlice(context.ContextOuterClass.Slice request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeSlice(context.ContextOuterClass.SliceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.SliceList> selectSlice(context.ContextOuterClass.SliceFilter request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionIdList> listConnectionIds(context.ContextOuterClass.ServiceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionList> listConnections(context.ContextOuterClass.ServiceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Connection> getConnection(context.ContextOuterClass.ConnectionId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.ConnectionId> setConnection(context.ContextOuterClass.Connection request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> removeConnection(context.ContextOuterClass.ConnectionId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ContextEvent> getContextEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.TopologyEvent> getTopologyEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.DeviceEvent> getDeviceEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.LinkEvent> getLinkEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ServiceEvent> getServiceEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.SliceEvent> getSliceEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<context.ContextOuterClass.ConnectionEvent> getConnectionEvents(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-                    .addMethod(
-                            context.ContextServiceGrpc.getListContextIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.ContextIdList>(
-                                            this, METHODID_LIST_CONTEXT_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListContextsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.ContextList>(
-                                            this, METHODID_LIST_CONTEXTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetContextMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.Context>(
-                                            this, METHODID_GET_CONTEXT, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetContextMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Context,
-                                            context.ContextOuterClass.ContextId>(
-                                            this, METHODID_SET_CONTEXT, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveContextMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_CONTEXT, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetContextEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.ContextEvent>(
-                                            this, METHODID_GET_CONTEXT_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListTopologyIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.TopologyIdList>(
-                                            this, METHODID_LIST_TOPOLOGY_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListTopologiesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.TopologyList>(
-                                            this, METHODID_LIST_TOPOLOGIES, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetTopologyMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.TopologyId,
-                                            context.ContextOuterClass.Topology>(
-                                            this, METHODID_GET_TOPOLOGY, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetTopologyDetailsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.TopologyId,
-                                            context.ContextOuterClass.TopologyDetails>(
-                                            this, METHODID_GET_TOPOLOGY_DETAILS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetTopologyMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Topology,
-                                            context.ContextOuterClass.TopologyId>(
-                                            this, METHODID_SET_TOPOLOGY, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveTopologyMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.TopologyId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_TOPOLOGY, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetTopologyEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.TopologyEvent>(
-                                            this, METHODID_GET_TOPOLOGY_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListDeviceIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.DeviceIdList>(
-                                            this, METHODID_LIST_DEVICE_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListDevicesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.DeviceList>(
-                                            this, METHODID_LIST_DEVICES, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceId,
-                                            context.ContextOuterClass.Device>(
-                                            this, METHODID_GET_DEVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Device,
-                                            context.ContextOuterClass.DeviceId>(
-                                            this, METHODID_SET_DEVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_DEVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetDeviceEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.DeviceEvent>(
-                                            this, METHODID_GET_DEVICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceFilter,
-                                            context.ContextOuterClass.DeviceList>(
-                                            this, METHODID_SELECT_DEVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListEndPointNamesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.EndPointIdList,
-                                            context.ContextOuterClass.EndPointNameList>(
-                                            this, METHODID_LIST_END_POINT_NAMES, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListLinkIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.LinkIdList>(
-                                            this, METHODID_LIST_LINK_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListLinksMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.LinkList>(
-                                            this, METHODID_LIST_LINKS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetLinkMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.LinkId,
-                                            context.ContextOuterClass.Link>(
-                                            this, METHODID_GET_LINK, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetLinkMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Link,
-                                            context.ContextOuterClass.LinkId>(
-                                            this, METHODID_SET_LINK, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveLinkMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.LinkId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_LINK, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetLinkEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.LinkEvent>(
-                                            this, METHODID_GET_LINK_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListServiceIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.ServiceIdList>(
-                                            this, METHODID_LIST_SERVICE_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListServicesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.ServiceList>(
-                                            this, METHODID_LIST_SERVICES, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceId,
-                                            context.ContextOuterClass.Service>(
-                                            this, METHODID_GET_SERVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Service,
-                                            context.ContextOuterClass.ServiceId>(
-                                            this, METHODID_SET_SERVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getUnsetServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Service,
-                                            context.ContextOuterClass.ServiceId>(
-                                            this, METHODID_UNSET_SERVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_SERVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetServiceEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.ServiceEvent>(
-                                            this, METHODID_GET_SERVICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectServiceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceFilter,
-                                            context.ContextOuterClass.ServiceList>(
-                                            this, METHODID_SELECT_SERVICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListSliceIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.SliceIdList>(
-                                            this, METHODID_LIST_SLICE_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListSlicesMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ContextId,
-                                            context.ContextOuterClass.SliceList>(
-                                            this, METHODID_LIST_SLICES, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.SliceId,
-                                            context.ContextOuterClass.Slice>(
-                                            this, METHODID_GET_SLICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Slice,
-                                            context.ContextOuterClass.SliceId>(
-                                            this, METHODID_SET_SLICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getUnsetSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Slice,
-                                            context.ContextOuterClass.SliceId>(
-                                            this, METHODID_UNSET_SLICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.SliceId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_SLICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetSliceEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.SliceEvent>(
-                                            this, METHODID_GET_SLICE_EVENTS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSelectSliceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.SliceFilter,
-                                            context.ContextOuterClass.SliceList>(
-                                            this, METHODID_SELECT_SLICE, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListConnectionIdsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceId,
-                                            context.ContextOuterClass.ConnectionIdList>(
-                                            this, METHODID_LIST_CONNECTION_IDS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getListConnectionsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ServiceId,
-                                            context.ContextOuterClass.ConnectionList>(
-                                            this, METHODID_LIST_CONNECTIONS, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetConnectionMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ConnectionId,
-                                            context.ContextOuterClass.Connection>(
-                                            this, METHODID_GET_CONNECTION, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getSetConnectionMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Connection,
-                                            context.ContextOuterClass.ConnectionId>(
-                                            this, METHODID_SET_CONNECTION, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getRemoveConnectionMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.ConnectionId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_REMOVE_CONNECTION, compression)))
-                    .addMethod(
-                            context.ContextServiceGrpc.getGetConnectionEventsMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            context.ContextOuterClass.ConnectionEvent>(
-                                            this, METHODID_GET_CONNECTION_EVENTS, compression)))
-                    .build();
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(context.ContextServiceGrpc.getListContextIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextIdList>(this, METHODID_LIST_CONTEXT_IDS, compression))).addMethod(context.ContextServiceGrpc.getListContextsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextList>(this, METHODID_LIST_CONTEXTS, compression))).addMethod(context.ContextServiceGrpc.getGetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Context>(this, METHODID_GET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getSetContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Context, context.ContextOuterClass.ContextId>(this, METHODID_SET_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getRemoveContextMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONTEXT, compression))).addMethod(context.ContextServiceGrpc.getGetContextEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ContextEvent>(this, METHODID_GET_CONTEXT_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListTopologyIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyIdList>(this, METHODID_LIST_TOPOLOGY_IDS, compression))).addMethod(context.ContextServiceGrpc.getListTopologiesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.TopologyList>(this, METHODID_LIST_TOPOLOGIES, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Topology>(this, METHODID_GET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyDetailsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyDetails>(this, METHODID_GET_TOPOLOGY_DETAILS, compression))).addMethod(context.ContextServiceGrpc.getSetTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Topology, context.ContextOuterClass.TopologyId>(this, METHODID_SET_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getRemoveTopologyMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.TopologyId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_TOPOLOGY, compression))).addMethod(context.ContextServiceGrpc.getGetTopologyEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.TopologyEvent>(this, METHODID_GET_TOPOLOGY_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListDeviceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceIdList>(this, METHODID_LIST_DEVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListDevicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceList>(this, METHODID_LIST_DEVICES, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Device>(this, METHODID_GET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getSetDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_SET_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getGetDeviceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.DeviceEvent>(this, METHODID_GET_DEVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceFilter, context.ContextOuterClass.DeviceList>(this, METHODID_SELECT_DEVICE, compression))).addMethod(context.ContextServiceGrpc.getListEndPointNamesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.EndPointIdList, context.ContextOuterClass.EndPointNameList>(this, METHODID_LIST_END_POINT_NAMES, compression))).addMethod(context.ContextServiceGrpc.getListLinkIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkIdList>(this, METHODID_LIST_LINK_IDS, compression))).addMethod(context.ContextServiceGrpc.getListLinksMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkList>(this, METHODID_LIST_LINKS, compression))).addMethod(context.ContextServiceGrpc.getGetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Link>(this, METHODID_GET_LINK, compression))).addMethod(context.ContextServiceGrpc.getSetLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Link, context.ContextOuterClass.LinkId>(this, METHODID_SET_LINK, compression))).addMethod(context.ContextServiceGrpc.getRemoveLinkMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.LinkId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_LINK, compression))).addMethod(context.ContextServiceGrpc.getGetLinkEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.LinkEvent>(this, METHODID_GET_LINK_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getListServiceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceIdList>(this, METHODID_LIST_SERVICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListServicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.ServiceList>(this, METHODID_LIST_SERVICES, compression))).addMethod(context.ContextServiceGrpc.getGetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Service>(this, METHODID_GET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getSetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_SET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Service, context.ContextOuterClass.ServiceId>(this, METHODID_UNSET_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getGetServiceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ServiceEvent>(this, METHODID_GET_SERVICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectServiceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceFilter, context.ContextOuterClass.ServiceList>(this, METHODID_SELECT_SERVICE, compression))).addMethod(context.ContextServiceGrpc.getListSliceIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceIdList>(this, METHODID_LIST_SLICE_IDS, compression))).addMethod(context.ContextServiceGrpc.getListSlicesMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ContextId, context.ContextOuterClass.SliceList>(this, METHODID_LIST_SLICES, compression))).addMethod(context.ContextServiceGrpc.getGetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Slice>(this, METHODID_GET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getSetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_SET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getUnsetSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Slice, context.ContextOuterClass.SliceId>(this, METHODID_UNSET_SLICE, compression))).addMethod(context.ContextServiceGrpc.getRemoveSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_SLICE, compression))).addMethod(context.ContextServiceGrpc.getGetSliceEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.SliceEvent>(this, METHODID_GET_SLICE_EVENTS, compression))).addMethod(context.ContextServiceGrpc.getSelectSliceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.SliceFilter, context.ContextOuterClass.SliceList>(this, METHODID_SELECT_SLICE, compression))).addMethod(context.ContextServiceGrpc.getListConnectionIdsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionIdList>(this, METHODID_LIST_CONNECTION_IDS, compression))).addMethod(context.ContextServiceGrpc.getListConnectionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ConnectionList>(this, METHODID_LIST_CONNECTIONS, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Connection>(this, METHODID_GET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getSetConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Connection, context.ContextOuterClass.ConnectionId>(this, METHODID_SET_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getRemoveConnectionMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.Empty>(this, METHODID_REMOVE_CONNECTION, compression))).addMethod(context.ContextServiceGrpc.getGetConnectionEventsMethod(), asyncServerStreamingCall(new MethodHandlers<context.ContextOuterClass.Empty, context.ContextOuterClass.ConnectionEvent>(this, METHODID_GET_CONNECTION_EVENTS, compression))).build();
         }
     }
 
     private static final int METHODID_LIST_CONTEXT_IDS = 0;
+
     private static final int METHODID_LIST_CONTEXTS = 1;
+
     private static final int METHODID_GET_CONTEXT = 2;
+
     private static final int METHODID_SET_CONTEXT = 3;
+
     private static final int METHODID_REMOVE_CONTEXT = 4;
+
     private static final int METHODID_GET_CONTEXT_EVENTS = 5;
+
     private static final int METHODID_LIST_TOPOLOGY_IDS = 6;
+
     private static final int METHODID_LIST_TOPOLOGIES = 7;
+
     private static final int METHODID_GET_TOPOLOGY = 8;
+
     private static final int METHODID_GET_TOPOLOGY_DETAILS = 9;
+
     private static final int METHODID_SET_TOPOLOGY = 10;
+
     private static final int METHODID_REMOVE_TOPOLOGY = 11;
+
     private static final int METHODID_GET_TOPOLOGY_EVENTS = 12;
+
     private static final int METHODID_LIST_DEVICE_IDS = 13;
+
     private static final int METHODID_LIST_DEVICES = 14;
+
     private static final int METHODID_GET_DEVICE = 15;
+
     private static final int METHODID_SET_DEVICE = 16;
+
     private static final int METHODID_REMOVE_DEVICE = 17;
+
     private static final int METHODID_GET_DEVICE_EVENTS = 18;
+
     private static final int METHODID_SELECT_DEVICE = 19;
+
     private static final int METHODID_LIST_END_POINT_NAMES = 20;
+
     private static final int METHODID_LIST_LINK_IDS = 21;
+
     private static final int METHODID_LIST_LINKS = 22;
+
     private static final int METHODID_GET_LINK = 23;
+
     private static final int METHODID_SET_LINK = 24;
+
     private static final int METHODID_REMOVE_LINK = 25;
+
     private static final int METHODID_GET_LINK_EVENTS = 26;
+
     private static final int METHODID_LIST_SERVICE_IDS = 27;
+
     private static final int METHODID_LIST_SERVICES = 28;
+
     private static final int METHODID_GET_SERVICE = 29;
+
     private static final int METHODID_SET_SERVICE = 30;
+
     private static final int METHODID_UNSET_SERVICE = 31;
+
     private static final int METHODID_REMOVE_SERVICE = 32;
+
     private static final int METHODID_GET_SERVICE_EVENTS = 33;
+
     private static final int METHODID_SELECT_SERVICE = 34;
+
     private static final int METHODID_LIST_SLICE_IDS = 35;
+
     private static final int METHODID_LIST_SLICES = 36;
+
     private static final int METHODID_GET_SLICE = 37;
+
     private static final int METHODID_SET_SLICE = 38;
+
     private static final int METHODID_UNSET_SLICE = 39;
+
     private static final int METHODID_REMOVE_SLICE = 40;
+
     private static final int METHODID_GET_SLICE_EVENTS = 41;
+
     private static final int METHODID_SELECT_SLICE = 42;
+
     private static final int METHODID_LIST_CONNECTION_IDS = 43;
+
     private static final int METHODID_LIST_CONNECTIONS = 44;
+
     private static final int METHODID_GET_CONNECTION = 45;
+
     private static final int METHODID_SET_CONNECTION = 46;
+
     private static final int METHODID_REMOVE_CONNECTION = 47;
+
     private static final int METHODID_GET_CONNECTION_EVENTS = 48;
 
-    private static final class MethodHandlers<Req, Resp> implements
-            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
         private final ContextServiceImplBase serviceImpl;
+
         private final int methodId;
+
         private final String compression;
 
         MethodHandlers(ContextServiceImplBase serviceImpl, int methodId, String compression) {
@@ -959,300 +563,153 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 case METHODID_LIST_CONTEXT_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listContextIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextIdList>) responseObserver, compression, serviceImpl::listContextIds);
                     break;
                 case METHODID_LIST_CONTEXTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList>) responseObserver,
-                            compression,
-                            serviceImpl::listContexts);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextList>) responseObserver, compression, serviceImpl::listContexts);
                     break;
                 case METHODID_GET_CONTEXT:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Context>) responseObserver,
-                            compression,
-                            serviceImpl::getContext);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Context>) responseObserver, compression, serviceImpl::getContext);
                     break;
                 case METHODID_SET_CONTEXT:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Context) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId>) responseObserver,
-                            compression,
-                            serviceImpl::setContext);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Context) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextId>) responseObserver, compression, serviceImpl::setContext);
                     break;
                 case METHODID_REMOVE_CONTEXT:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeContext);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeContext);
                     break;
                 case METHODID_GET_CONTEXT_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getContextEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ContextEvent>) responseObserver, compression, serviceImpl::getContextEvents);
                     break;
                 case METHODID_LIST_TOPOLOGY_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listTopologyIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyIdList>) responseObserver, compression, serviceImpl::listTopologyIds);
                     break;
                 case METHODID_LIST_TOPOLOGIES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList>) responseObserver,
-                            compression,
-                            serviceImpl::listTopologies);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyList>) responseObserver, compression, serviceImpl::listTopologies);
                     break;
                 case METHODID_GET_TOPOLOGY:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology>) responseObserver,
-                            compression,
-                            serviceImpl::getTopology);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Topology>) responseObserver, compression, serviceImpl::getTopology);
                     break;
                 case METHODID_GET_TOPOLOGY_DETAILS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver,
-                            compression,
-                            serviceImpl::getTopologyDetails);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyDetails>) responseObserver, compression, serviceImpl::getTopologyDetails);
                     break;
                 case METHODID_SET_TOPOLOGY:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Topology) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver,
-                            compression,
-                            serviceImpl::setTopology);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Topology) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyId>) responseObserver, compression, serviceImpl::setTopology);
                     break;
                 case METHODID_REMOVE_TOPOLOGY:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeTopology);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.TopologyId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeTopology);
                     break;
                 case METHODID_GET_TOPOLOGY_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getTopologyEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.TopologyEvent>) responseObserver, compression, serviceImpl::getTopologyEvents);
                     break;
                 case METHODID_LIST_DEVICE_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listDeviceIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceIdList>) responseObserver, compression, serviceImpl::listDeviceIds);
                     break;
                 case METHODID_LIST_DEVICES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver,
-                            compression,
-                            serviceImpl::listDevices);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver, compression, serviceImpl::listDevices);
                     break;
                 case METHODID_GET_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Device>) responseObserver,
-                            compression,
-                            serviceImpl::getDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Device>) responseObserver, compression, serviceImpl::getDevice);
                     break;
                 case METHODID_SET_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Device) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver,
-                            compression,
-                            serviceImpl::setDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver, compression, serviceImpl::setDevice);
                     break;
                 case METHODID_REMOVE_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeDevice);
                     break;
                 case METHODID_GET_DEVICE_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getDeviceEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceEvent>) responseObserver, compression, serviceImpl::getDeviceEvents);
                     break;
                 case METHODID_SELECT_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceList>) responseObserver, compression, serviceImpl::selectDevice);
                     break;
                 case METHODID_LIST_END_POINT_NAMES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.EndPointIdList) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver,
-                            compression,
-                            serviceImpl::listEndPointNames);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.EndPointIdList) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.EndPointNameList>) responseObserver, compression, serviceImpl::listEndPointNames);
                     break;
                 case METHODID_LIST_LINK_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listLinkIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkIdList>) responseObserver, compression, serviceImpl::listLinkIds);
                     break;
                 case METHODID_LIST_LINKS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList>) responseObserver,
-                            compression,
-                            serviceImpl::listLinks);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkList>) responseObserver, compression, serviceImpl::listLinks);
                     break;
                 case METHODID_GET_LINK:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Link>) responseObserver,
-                            compression,
-                            serviceImpl::getLink);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Link>) responseObserver, compression, serviceImpl::getLink);
                     break;
                 case METHODID_SET_LINK:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Link) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId>) responseObserver,
-                            compression,
-                            serviceImpl::setLink);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Link) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkId>) responseObserver, compression, serviceImpl::setLink);
                     break;
                 case METHODID_REMOVE_LINK:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeLink);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.LinkId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeLink);
                     break;
                 case METHODID_GET_LINK_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getLinkEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.LinkEvent>) responseObserver, compression, serviceImpl::getLinkEvents);
                     break;
                 case METHODID_LIST_SERVICE_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listServiceIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceIdList>) responseObserver, compression, serviceImpl::listServiceIds);
                     break;
                 case METHODID_LIST_SERVICES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver,
-                            compression,
-                            serviceImpl::listServices);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver, compression, serviceImpl::listServices);
                     break;
                 case METHODID_GET_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Service>) responseObserver,
-                            compression,
-                            serviceImpl::getService);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Service>) responseObserver, compression, serviceImpl::getService);
                     break;
                 case METHODID_SET_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Service) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver,
-                            compression,
-                            serviceImpl::setService);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Service) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver, compression, serviceImpl::setService);
                     break;
                 case METHODID_UNSET_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Service) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver,
-                            compression,
-                            serviceImpl::unsetService);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Service) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceId>) responseObserver, compression, serviceImpl::unsetService);
                     break;
                 case METHODID_REMOVE_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeService);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeService);
                     break;
                 case METHODID_GET_SERVICE_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getServiceEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceEvent>) responseObserver, compression, serviceImpl::getServiceEvents);
                     break;
                 case METHODID_SELECT_SERVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectService);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ServiceList>) responseObserver, compression, serviceImpl::selectService);
                     break;
                 case METHODID_LIST_SLICE_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listSliceIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceIdList>) responseObserver, compression, serviceImpl::listSliceIds);
                     break;
                 case METHODID_LIST_SLICES:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver,
-                            compression,
-                            serviceImpl::listSlices);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ContextId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver, compression, serviceImpl::listSlices);
                     break;
                 case METHODID_GET_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.SliceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice>) responseObserver,
-                            compression,
-                            serviceImpl::getSlice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Slice>) responseObserver, compression, serviceImpl::getSlice);
                     break;
                 case METHODID_SET_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Slice) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver,
-                            compression,
-                            serviceImpl::setSlice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Slice) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver, compression, serviceImpl::setSlice);
                     break;
                 case METHODID_UNSET_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Slice) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver,
-                            compression,
-                            serviceImpl::unsetSlice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Slice) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceId>) responseObserver, compression, serviceImpl::unsetSlice);
                     break;
                 case METHODID_REMOVE_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.SliceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeSlice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.SliceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeSlice);
                     break;
                 case METHODID_GET_SLICE_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getSliceEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceEvent>) responseObserver, compression, serviceImpl::getSliceEvents);
                     break;
                 case METHODID_SELECT_SLICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.SliceFilter) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver,
-                            compression,
-                            serviceImpl::selectSlice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.SliceFilter) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.SliceList>) responseObserver, compression, serviceImpl::selectSlice);
                     break;
                 case METHODID_LIST_CONNECTION_IDS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver,
-                            compression,
-                            serviceImpl::listConnectionIds);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionIdList>) responseObserver, compression, serviceImpl::listConnectionIds);
                     break;
                 case METHODID_LIST_CONNECTIONS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList>) responseObserver,
-                            compression,
-                            serviceImpl::listConnections);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ServiceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionList>) responseObserver, compression, serviceImpl::listConnections);
                     break;
                 case METHODID_GET_CONNECTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ConnectionId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection>) responseObserver,
-                            compression,
-                            serviceImpl::getConnection);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ConnectionId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Connection>) responseObserver, compression, serviceImpl::getConnection);
                     break;
                 case METHODID_SET_CONNECTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Connection) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId>) responseObserver,
-                            compression,
-                            serviceImpl::setConnection);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Connection) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionId>) responseObserver, compression, serviceImpl::setConnection);
                     break;
                 case METHODID_REMOVE_CONNECTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.ConnectionId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::removeConnection);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.ConnectionId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::removeConnection);
                     break;
                 case METHODID_GET_CONNECTION_EVENTS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver,
-                            compression,
-                            serviceImpl::getConnectionEvents);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.ConnectionEvent>) responseObserver, compression, serviceImpl::getConnectionEvents);
                     break;
                 default:
                     throw new java.lang.AssertionError();
@@ -1262,11 +719,10 @@ public final class MutinyContextServiceGrpc implements io.quarkus.grpc.runtime.M
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 default:
                     throw new java.lang.AssertionError();
             }
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/device/Device.java b/src/ztp/target/generated-sources/grpc/device/Device.java
index bc57d19cae53bf0540a402e9771bc87c1ecf49c5..a127e8f1cc5302bba07d991b07540e91154a7973 100644
--- a/src/ztp/target/generated-sources/grpc/device/Device.java
+++ b/src/ztp/target/generated-sources/grpc/device/Device.java
@@ -1,1031 +1,928 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: device.proto
-
 package device;
 
 public final class Device {
-  private Device() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistryLite registry) {
-  }
-
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-    registerAllExtensions(
-        (com.google.protobuf.ExtensionRegistryLite) registry);
-  }
-  public interface MonitoringSettingsOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:device.MonitoringSettings)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
-
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     * @return Whether the kpiDescriptor field is set.
-     */
-    boolean hasKpiDescriptor();
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     * @return The kpiDescriptor.
-     */
-    monitoring.Monitoring.KpiDescriptor getKpiDescriptor();
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     */
-    monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder();
 
-    /**
-     * <code>float sampling_duration_s = 3;</code>
-     * @return The samplingDurationS.
-     */
-    float getSamplingDurationS();
-
-    /**
-     * <code>float sampling_interval_s = 4;</code>
-     * @return The samplingIntervalS.
-     */
-    float getSamplingIntervalS();
-  }
-  /**
-   * Protobuf type {@code device.MonitoringSettings}
-   */
-  public static final class MonitoringSettings extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:device.MonitoringSettings)
-      MonitoringSettingsOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use MonitoringSettings.newBuilder() to construct.
-    private MonitoringSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private MonitoringSettings() {
+    private Device() {
     }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new MonitoringSettings();
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
     }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
     }
-    private MonitoringSettings(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiDescriptor.Builder subBuilder = null;
-              if (kpiDescriptor_ != null) {
-                subBuilder = kpiDescriptor_.toBuilder();
-              }
-              kpiDescriptor_ = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiDescriptor_);
-                kpiDescriptor_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 29: {
 
-              samplingDurationS_ = input.readFloat();
-              break;
-            }
-            case 37: {
+    public interface MonitoringSettingsOrBuilder extends // @@protoc_insertion_point(interface_extends:device.MonitoringSettings)
+    com.google.protobuf.MessageOrBuilder {
 
-              samplingIntervalS_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return device.Device.internal_static_device_MonitoringSettings_descriptor;
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return device.Device.internal_static_device_MonitoringSettings_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              device.Device.MonitoringSettings.class, device.Device.MonitoringSettings.Builder.class);
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
 
-    public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiDescriptor kpiDescriptor_;
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     * @return Whether the kpiDescriptor field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiDescriptor() {
-      return kpiDescriptor_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     * @return The kpiDescriptor.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptor getKpiDescriptor() {
-      return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
-    }
-    /**
-     * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
-      return getKpiDescriptor();
-    }
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         * @return Whether the kpiDescriptor field is set.
+         */
+        boolean hasKpiDescriptor();
 
-    public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
-    private float samplingDurationS_;
-    /**
-     * <code>float sampling_duration_s = 3;</code>
-     * @return The samplingDurationS.
-     */
-    @java.lang.Override
-    public float getSamplingDurationS() {
-      return samplingDurationS_;
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         * @return The kpiDescriptor.
+         */
+        monitoring.Monitoring.KpiDescriptor getKpiDescriptor();
+
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         */
+        monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder();
+
+        /**
+         * <code>float sampling_duration_s = 3;</code>
+         * @return The samplingDurationS.
+         */
+        float getSamplingDurationS();
+
+        /**
+         * <code>float sampling_interval_s = 4;</code>
+         * @return The samplingIntervalS.
+         */
+        float getSamplingIntervalS();
     }
 
-    public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
-    private float samplingIntervalS_;
     /**
-     * <code>float sampling_interval_s = 4;</code>
-     * @return The samplingIntervalS.
+     * Protobuf type {@code device.MonitoringSettings}
      */
-    @java.lang.Override
-    public float getSamplingIntervalS() {
-      return samplingIntervalS_;
-    }
+    public static final class MonitoringSettings extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:device.MonitoringSettings)
+    MonitoringSettingsOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use MonitoringSettings.newBuilder() to construct.
+        private MonitoringSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (kpiDescriptor_ != null) {
-        output.writeMessage(2, getKpiDescriptor());
-      }
-      if (samplingDurationS_ != 0F) {
-        output.writeFloat(3, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
-        output.writeFloat(4, samplingIntervalS_);
-      }
-      unknownFields.writeTo(output);
-    }
+        private MonitoringSettings() {
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (kpiDescriptor_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiDescriptor());
-      }
-      if (samplingDurationS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(4, samplingIntervalS_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new MonitoringSettings();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof device.Device.MonitoringSettings)) {
-        return super.equals(obj);
-      }
-      device.Device.MonitoringSettings other = (device.Device.MonitoringSettings) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (hasKpiDescriptor() != other.hasKpiDescriptor()) return false;
-      if (hasKpiDescriptor()) {
-        if (!getKpiDescriptor()
-            .equals(other.getKpiDescriptor())) return false;
-      }
-      if (java.lang.Float.floatToIntBits(getSamplingDurationS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingDurationS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingIntervalS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingIntervalS())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return device.Device.internal_static_device_MonitoringSettings_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      if (hasKpiDescriptor()) {
-        hash = (37 * hash) + KPI_DESCRIPTOR_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiDescriptor().hashCode();
-      }
-      hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingDurationS());
-      hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingIntervalS());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return device.Device.internal_static_device_MonitoringSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(device.Device.MonitoringSettings.class, device.Device.MonitoringSettings.Builder.class);
+        }
 
-    public static device.Device.MonitoringSettings parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static device.Device.MonitoringSettings parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static device.Device.MonitoringSettings parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static device.Device.MonitoringSettings parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static device.Device.MonitoringSettings parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static device.Device.MonitoringSettings parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int KPI_ID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(device.Device.MonitoringSettings prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private monitoring.Monitoring.KpiId kpiId_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code device.MonitoringSettings}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:device.MonitoringSettings)
-        device.Device.MonitoringSettingsOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return device.Device.internal_static_device_MonitoringSettings_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return device.Device.internal_static_device_MonitoringSettings_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                device.Device.MonitoringSettings.class, device.Device.MonitoringSettings.Builder.class);
-      }
-
-      // Construct using device.Device.MonitoringSettings.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
         }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
-        if (kpiDescriptorBuilder_ == null) {
-          kpiDescriptor_ = null;
-        } else {
-          kpiDescriptor_ = null;
-          kpiDescriptorBuilder_ = null;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
         }
-        samplingDurationS_ = 0F;
 
-        samplingIntervalS_ = 0F;
+        public static final int KPI_DESCRIPTOR_FIELD_NUMBER = 2;
 
-        return this;
-      }
+        private monitoring.Monitoring.KpiDescriptor kpiDescriptor_;
 
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return device.Device.internal_static_device_MonitoringSettings_descriptor;
-      }
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         * @return Whether the kpiDescriptor field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiDescriptor() {
+            return kpiDescriptor_ != null;
+        }
 
-      @java.lang.Override
-      public device.Device.MonitoringSettings getDefaultInstanceForType() {
-        return device.Device.MonitoringSettings.getDefaultInstance();
-      }
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         * @return The kpiDescriptor.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptor getKpiDescriptor() {
+            return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+        }
 
-      @java.lang.Override
-      public device.Device.MonitoringSettings build() {
-        device.Device.MonitoringSettings result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
+        /**
+         * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
+            return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
         }
-        return result;
-      }
-
-      @java.lang.Override
-      public device.Device.MonitoringSettings buildPartial() {
-        device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
+
+        public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
+
+        private float samplingDurationS_ = 0F;
+
+        /**
+         * <code>float sampling_duration_s = 3;</code>
+         * @return The samplingDurationS.
+         */
+        @java.lang.Override
+        public float getSamplingDurationS() {
+            return samplingDurationS_;
         }
-        if (kpiDescriptorBuilder_ == null) {
-          result.kpiDescriptor_ = kpiDescriptor_;
-        } else {
-          result.kpiDescriptor_ = kpiDescriptorBuilder_.build();
+
+        public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
+
+        private float samplingIntervalS_ = 0F;
+
+        /**
+         * <code>float sampling_interval_s = 4;</code>
+         * @return The samplingIntervalS.
+         */
+        @java.lang.Override
+        public float getSamplingIntervalS() {
+            return samplingIntervalS_;
         }
-        result.samplingDurationS_ = samplingDurationS_;
-        result.samplingIntervalS_ = samplingIntervalS_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof device.Device.MonitoringSettings) {
-          return mergeFrom((device.Device.MonitoringSettings)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
+
+        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;
         }
-      }
 
-      public Builder mergeFrom(device.Device.MonitoringSettings other) {
-        if (other == device.Device.MonitoringSettings.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            if (kpiDescriptor_ != null) {
+                output.writeMessage(2, getKpiDescriptor());
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+                output.writeFloat(3, samplingDurationS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+                output.writeFloat(4, samplingIntervalS_);
+            }
+            getUnknownFields().writeTo(output);
         }
-        if (other.hasKpiDescriptor()) {
-          mergeKpiDescriptor(other.getKpiDescriptor());
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            if (kpiDescriptor_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiDescriptor());
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
         }
-        if (other.getSamplingDurationS() != 0F) {
-          setSamplingDurationS(other.getSamplingDurationS());
+
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof device.Device.MonitoringSettings)) {
+                return super.equals(obj);
+            }
+            device.Device.MonitoringSettings other = (device.Device.MonitoringSettings) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (hasKpiDescriptor() != other.hasKpiDescriptor())
+                return false;
+            if (hasKpiDescriptor()) {
+                if (!getKpiDescriptor().equals(other.getKpiDescriptor()))
+                    return false;
+            }
+            if (java.lang.Float.floatToIntBits(getSamplingDurationS()) != java.lang.Float.floatToIntBits(other.getSamplingDurationS()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS()))
+                return false;
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
         }
-        if (other.getSamplingIntervalS() != 0F) {
-          setSamplingIntervalS(other.getSamplingIntervalS());
+
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            if (hasKpiDescriptor()) {
+                hash = (37 * hash) + KPI_DESCRIPTOR_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiDescriptor().hashCode();
+            }
+            hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS());
+            hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        device.Device.MonitoringSettings parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (device.Device.MonitoringSettings) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
+
+        public static device.Device.MonitoringSettings parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
         }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
+
+        public static device.Device.MonitoringSettings parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
         }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
+
+        public static device.Device.MonitoringSettings parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
+        public static device.Device.MonitoringSettings parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
+        public static device.Device.MonitoringSettings parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
+        public static device.Device.MonitoringSettings parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        public static device.Device.MonitoringSettings parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
+
+        public static device.Device.MonitoringSettings parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
-        return kpiIdBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiDescriptor kpiDescriptor_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorBuilder_;
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       * @return Whether the kpiDescriptor field is set.
-       */
-      public boolean hasKpiDescriptor() {
-        return kpiDescriptorBuilder_ != null || kpiDescriptor_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       * @return The kpiDescriptor.
-       */
-      public monitoring.Monitoring.KpiDescriptor getKpiDescriptor() {
-        if (kpiDescriptorBuilder_ == null) {
-          return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
-        } else {
-          return kpiDescriptorBuilder_.getMessage();
+
+        public static device.Device.MonitoringSettings parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
         }
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiDescriptor_ = value;
-          onChanged();
-        } else {
-          kpiDescriptorBuilder_.setMessage(value);
+
+        public static device.Device.MonitoringSettings parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public Builder setKpiDescriptor(
-          monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorBuilder_ == null) {
-          kpiDescriptor_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiDescriptorBuilder_.setMessage(builderForValue.build());
+        public static device.Device.MonitoringSettings parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorBuilder_ == null) {
-          if (kpiDescriptor_ != null) {
-            kpiDescriptor_ =
-              monitoring.Monitoring.KpiDescriptor.newBuilder(kpiDescriptor_).mergeFrom(value).buildPartial();
-          } else {
-            kpiDescriptor_ = value;
-          }
-          onChanged();
-        } else {
-          kpiDescriptorBuilder_.mergeFrom(value);
+        public static device.Device.MonitoringSettings parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public Builder clearKpiDescriptor() {
-        if (kpiDescriptorBuilder_ == null) {
-          kpiDescriptor_ = null;
-          onChanged();
-        } else {
-          kpiDescriptor_ = null;
-          kpiDescriptorBuilder_ = null;
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
         }
 
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() {
-        
-        onChanged();
-        return getKpiDescriptorFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
-        if (kpiDescriptorBuilder_ != null) {
-          return kpiDescriptorBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiDescriptor_ == null ?
-              monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
         }
-      }
-      /**
-       * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> 
-          getKpiDescriptorFieldBuilder() {
-        if (kpiDescriptorBuilder_ == null) {
-          kpiDescriptorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(
-                  getKpiDescriptor(),
-                  getParentForChildren(),
-                  isClean());
-          kpiDescriptor_ = null;
+
+        public static Builder newBuilder(device.Device.MonitoringSettings prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
         }
-        return kpiDescriptorBuilder_;
-      }
-
-      private float samplingDurationS_ ;
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @return The samplingDurationS.
-       */
-      @java.lang.Override
-      public float getSamplingDurationS() {
-        return samplingDurationS_;
-      }
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @param value The samplingDurationS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingDurationS(float value) {
-        
-        samplingDurationS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingDurationS() {
-        
-        samplingDurationS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float samplingIntervalS_ ;
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @return The samplingIntervalS.
-       */
-      @java.lang.Override
-      public float getSamplingIntervalS() {
-        return samplingIntervalS_;
-      }
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @param value The samplingIntervalS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingIntervalS(float value) {
-        
-        samplingIntervalS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingIntervalS() {
-        
-        samplingIntervalS_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:device.MonitoringSettings)
-    }
 
-    // @@protoc_insertion_point(class_scope:device.MonitoringSettings)
-    private static final device.Device.MonitoringSettings DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new device.Device.MonitoringSettings();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static device.Device.MonitoringSettings getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    private static final com.google.protobuf.Parser<MonitoringSettings>
-        PARSER = new com.google.protobuf.AbstractParser<MonitoringSettings>() {
-      @java.lang.Override
-      public MonitoringSettings parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MonitoringSettings(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<MonitoringSettings> parser() {
-      return PARSER;
-    }
+        /**
+         * Protobuf type {@code device.MonitoringSettings}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:device.MonitoringSettings)
+        device.Device.MonitoringSettingsOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return device.Device.internal_static_device_MonitoringSettings_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return device.Device.internal_static_device_MonitoringSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(device.Device.MonitoringSettings.class, device.Device.MonitoringSettings.Builder.class);
+            }
+
+            // Construct using device.Device.MonitoringSettings.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                kpiDescriptor_ = null;
+                if (kpiDescriptorBuilder_ != null) {
+                    kpiDescriptorBuilder_.dispose();
+                    kpiDescriptorBuilder_ = null;
+                }
+                samplingDurationS_ = 0F;
+                samplingIntervalS_ = 0F;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return device.Device.internal_static_device_MonitoringSettings_descriptor;
+            }
+
+            @java.lang.Override
+            public device.Device.MonitoringSettings getDefaultInstanceForType() {
+                return device.Device.MonitoringSettings.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public device.Device.MonitoringSettings build() {
+                device.Device.MonitoringSettings result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public device.Device.MonitoringSettings buildPartial() {
+                device.Device.MonitoringSettings result = new device.Device.MonitoringSettings(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(device.Device.MonitoringSettings result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiDescriptor_ = kpiDescriptorBuilder_ == null ? kpiDescriptor_ : kpiDescriptorBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingDurationS_ = samplingDurationS_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.samplingIntervalS_ = samplingIntervalS_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof device.Device.MonitoringSettings) {
+                    return mergeFrom((device.Device.MonitoringSettings) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(device.Device.MonitoringSettings other) {
+                if (other == device.Device.MonitoringSettings.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (other.hasKpiDescriptor()) {
+                    mergeKpiDescriptor(other.getKpiDescriptor());
+                }
+                if (other.getSamplingDurationS() != 0F) {
+                    setSamplingDurationS(other.getSamplingDurationS());
+                }
+                if (other.getSamplingIntervalS() != 0F) {
+                    setSamplingIntervalS(other.getSamplingIntervalS());
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiDescriptorFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 29:
+                                {
+                                    samplingDurationS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            case 37:
+                                {
+                                    samplingIntervalS_ = input.readFloat();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 37
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiDescriptor kpiDescriptor_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorBuilder_;
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             * @return Whether the kpiDescriptor field is set.
+             */
+            public boolean hasKpiDescriptor() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             * @return The kpiDescriptor.
+             */
+            public monitoring.Monitoring.KpiDescriptor getKpiDescriptor() {
+                if (kpiDescriptorBuilder_ == null) {
+                    return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+                } else {
+                    return kpiDescriptorBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
+                if (kpiDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiDescriptor_ = value;
+                } else {
+                    kpiDescriptorBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public Builder setKpiDescriptor(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptor_ = builderForValue.build();
+                } else {
+                    kpiDescriptorBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public Builder mergeKpiDescriptor(monitoring.Monitoring.KpiDescriptor value) {
+                if (kpiDescriptorBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && kpiDescriptor_ != null && kpiDescriptor_ != monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) {
+                        getKpiDescriptorBuilder().mergeFrom(value);
+                    } else {
+                        kpiDescriptor_ = value;
+                    }
+                } else {
+                    kpiDescriptorBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public Builder clearKpiDescriptor() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiDescriptor_ = null;
+                if (kpiDescriptorBuilder_ != null) {
+                    kpiDescriptorBuilder_.dispose();
+                    kpiDescriptorBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getKpiDescriptorFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorOrBuilder() {
+                if (kpiDescriptorBuilder_ != null) {
+                    return kpiDescriptorBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiDescriptor_ == null ? monitoring.Monitoring.KpiDescriptor.getDefaultInstance() : kpiDescriptor_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiDescriptor kpi_descriptor = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> getKpiDescriptorFieldBuilder() {
+                if (kpiDescriptorBuilder_ == null) {
+                    kpiDescriptorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(getKpiDescriptor(), getParentForChildren(), isClean());
+                    kpiDescriptor_ = null;
+                }
+                return kpiDescriptorBuilder_;
+            }
+
+            private float samplingDurationS_;
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @return The samplingDurationS.
+             */
+            @java.lang.Override
+            public float getSamplingDurationS() {
+                return samplingDurationS_;
+            }
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @param value The samplingDurationS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSamplingDurationS(float value) {
+                samplingDurationS_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSamplingDurationS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                samplingDurationS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private float samplingIntervalS_;
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @return The samplingIntervalS.
+             */
+            @java.lang.Override
+            public float getSamplingIntervalS() {
+                return samplingIntervalS_;
+            }
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @param value The samplingIntervalS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSamplingIntervalS(float value) {
+                samplingIntervalS_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSamplingIntervalS() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                samplingIntervalS_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<MonitoringSettings> getParserForType() {
-      return PARSER;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:device.MonitoringSettings)
+        }
+
+        // @@protoc_insertion_point(class_scope:device.MonitoringSettings)
+        private static final device.Device.MonitoringSettings DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new device.Device.MonitoringSettings();
+        }
+
+        public static device.Device.MonitoringSettings getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<MonitoringSettings> PARSER = new com.google.protobuf.AbstractParser<MonitoringSettings>() {
+
+            @java.lang.Override
+            public MonitoringSettings 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<MonitoringSettings> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<MonitoringSettings> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public device.Device.MonitoringSettings getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public device.Device.MonitoringSettings getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_device_MonitoringSettings_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_device_MonitoringSettings_fieldAccessorTable;
+
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_device_MonitoringSettings_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_device_MonitoringSettings_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\014device.proto\022\006device\032\rcontext.proto\032\020m" +
-      "onitoring.proto\"\244\001\n\022MonitoringSettings\022!" +
-      "\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId\0221\n\016kpi" +
-      "_descriptor\030\002 \001(\0132\031.monitoring.KpiDescri" +
-      "ptor\022\033\n\023sampling_duration_s\030\003 \001(\002\022\033\n\023sam" +
-      "pling_interval_s\030\004 \001(\0022\262\002\n\rDeviceService" +
-      "\0221\n\tAddDevice\022\017.context.Device\032\021.context" +
-      ".DeviceId\"\000\0227\n\017ConfigureDevice\022\017.context" +
-      ".Device\032\021.context.DeviceId\"\000\0223\n\014DeleteDe" +
-      "vice\022\021.context.DeviceId\032\016.context.Empty\"" +
-      "\000\022>\n\020GetInitialConfig\022\021.context.DeviceId" +
-      "\032\025.context.DeviceConfig\"\000\022@\n\020MonitorDevi" +
-      "ceKpi\022\032.device.MonitoringSettings\032\016.cont" +
-      "ext.Empty\"\000b\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          context.ContextOuterClass.getDescriptor(),
-          monitoring.Monitoring.getDescriptor(),
-        });
-    internal_static_device_MonitoringSettings_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_device_MonitoringSettings_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_device_MonitoringSettings_descriptor,
-        new java.lang.String[] { "KpiId", "KpiDescriptor", "SamplingDurationS", "SamplingIntervalS", });
-    context.ContextOuterClass.getDescriptor();
-    monitoring.Monitoring.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
+
+    static {
+        java.lang.String[] descriptorData = { "\n\014device.proto\022\006device\032\rcontext.proto\032\020m" + "onitoring.proto\"\244\001\n\022MonitoringSettings\022!" + "\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId\0221\n\016kpi" + "_descriptor\030\002 \001(\0132\031.monitoring.KpiDescri" + "ptor\022\033\n\023sampling_duration_s\030\003 \001(\002\022\033\n\023sam" + "pling_interval_s\030\004 \001(\0022\262\002\n\rDeviceService" + "\0221\n\tAddDevice\022\017.context.Device\032\021.context" + ".DeviceId\"\000\0227\n\017ConfigureDevice\022\017.context" + ".Device\032\021.context.DeviceId\"\000\0223\n\014DeleteDe" + "vice\022\021.context.DeviceId\032\016.context.Empty\"" + "\000\022>\n\020GetInitialConfig\022\021.context.DeviceId" + "\032\025.context.DeviceConfig\"\000\022@\n\020MonitorDevi" + "ceKpi\022\032.device.MonitoringSettings\032\016.cont" + "ext.Empty\"\000b\006proto3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { context.ContextOuterClass.getDescriptor(), monitoring.Monitoring.getDescriptor() });
+        internal_static_device_MonitoringSettings_descriptor = getDescriptor().getMessageTypes().get(0);
+        internal_static_device_MonitoringSettings_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_device_MonitoringSettings_descriptor, new java.lang.String[] { "KpiId", "KpiDescriptor", "SamplingDurationS", "SamplingIntervalS" });
+        context.ContextOuterClass.getDescriptor();
+        monitoring.Monitoring.getDescriptor();
+    }
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceService.java b/src/ztp/target/generated-sources/grpc/device/DeviceService.java
index 1768f9911b9d05a7c61e70d8f75e397f9a3341a4..e68e59d1ce0f85cb3ba865e031221ad42a536f38 100644
--- a/src/ztp/target/generated-sources/grpc/device/DeviceService.java
+++ b/src/ztp/target/generated-sources/grpc/device/DeviceService.java
@@ -1,24 +1,17 @@
 package device;
 
-import io.quarkus.grpc.runtime.MutinyService;
+import io.quarkus.grpc.MutinyService;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: device.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: device.proto")
 public interface DeviceService extends MutinyService {
 
-    
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request);
-    
-    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request);
-    
-    
-    
 
-}
\ No newline at end of file
+    io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request);
+}
diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java
index c7e767237abc22ff273cc454f1433e5f811382fc..45df139991757cf6314ade0bb985605da95a4618 100644
--- a/src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java
@@ -2,58 +2,59 @@ package device;
 
 import io.grpc.BindableService;
 import io.quarkus.grpc.GrpcService;
-import io.quarkus.grpc.runtime.MutinyBean;
+import io.quarkus.grpc.MutinyBean;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: device.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: device.proto")
 public class DeviceServiceBean extends MutinyDeviceServiceGrpc.DeviceServiceImplBase implements BindableService, MutinyBean {
 
     private final DeviceService delegate;
 
     DeviceServiceBean(@GrpcService DeviceService delegate) {
-       this.delegate = delegate;
+        this.delegate = delegate;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request) {
-       try {
-         return delegate.addDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.addDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request) {
-       try {
-         return delegate.configureDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.configureDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request) {
-       try {
-         return delegate.deleteDevice(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.deleteDevice(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request) {
-       try {
-         return delegate.getInitialConfig(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getInitialConfig(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request) {
-       try {
-         return delegate.monitorDeviceKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.monitorDeviceKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java
index 2445752a6392c3f6f9df0b0ef439d789e6a8d925..d832820b2fe861621cf0e0361e203c71be57485a 100644
--- a/src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java
+++ b/src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java
@@ -1,44 +1,52 @@
 package device;
 
 import java.util.function.BiFunction;
+import io.quarkus.grpc.MutinyClient;
 
-import io.quarkus.grpc.runtime.MutinyClient;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: device.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: device.proto")
 public class DeviceServiceClient implements DeviceService, MutinyClient<MutinyDeviceServiceGrpc.MutinyDeviceServiceStub> {
 
     private final MutinyDeviceServiceGrpc.MutinyDeviceServiceStub stub;
 
     public DeviceServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyDeviceServiceGrpc.MutinyDeviceServiceStub, MutinyDeviceServiceGrpc.MutinyDeviceServiceStub> stubConfigurator) {
-       this.stub = stubConfigurator.apply(name,MutinyDeviceServiceGrpc.newMutinyStub(channel));
+        this.stub = stubConfigurator.apply(name, MutinyDeviceServiceGrpc.newMutinyStub(channel));
+    }
+
+    private DeviceServiceClient(MutinyDeviceServiceGrpc.MutinyDeviceServiceStub stub) {
+        this.stub = stub;
+    }
+
+    public DeviceServiceClient newInstanceWithStub(MutinyDeviceServiceGrpc.MutinyDeviceServiceStub stub) {
+        return new DeviceServiceClient(stub);
     }
 
     @Override
     public MutinyDeviceServiceGrpc.MutinyDeviceServiceStub getStub() {
-       return stub;
+        return stub;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request) {
-       return stub.addDevice(request);
+        return stub.addDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request) {
-       return stub.configureDevice(request);
+        return stub.configureDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request) {
-       return stub.deleteDevice(request);
+        return stub.deleteDevice(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request) {
-       return stub.getInitialConfig(request);
+        return stub.getInitialConfig(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request) {
-       return stub.monitorDeviceKpi(request);
+        return stub.monitorDeviceKpi(request);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
index 9c2e379d311a58ca51c9208feba359120c086c0e..7e0cf9a8bb4cc207f65ce27177f7307567a19f04 100644
--- a/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
@@ -4,568 +4,421 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.38.1)",
-    comments = "Source: device.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: device.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class DeviceServiceGrpc {
 
-  private DeviceServiceGrpc() {}
+    private DeviceServiceGrpc() {
+    }
 
-  public static final String SERVICE_NAME = "device.DeviceService";
+    public static final String SERVICE_NAME = "device.DeviceService";
 
-  // Static method descriptors that strictly reflect the proto.
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getAddDeviceMethod;
+    // Static method descriptors that strictly reflect the proto.
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getAddDeviceMethod;
 
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "AddDevice",
-      requestType = context.ContextOuterClass.Device.class,
-      responseType = context.ContextOuterClass.DeviceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getAddDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getAddDeviceMethod;
-    if ((getAddDeviceMethod = DeviceServiceGrpc.getAddDeviceMethod) == null) {
-      synchronized (DeviceServiceGrpc.class) {
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "AddDevice", requestType = context.ContextOuterClass.Device.class, responseType = context.ContextOuterClass.DeviceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getAddDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getAddDeviceMethod;
         if ((getAddDeviceMethod = DeviceServiceGrpc.getAddDeviceMethod) == null) {
-          DeviceServiceGrpc.getAddDeviceMethod = getAddDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "AddDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Device.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("AddDevice"))
-              .build();
-        }
-      }
+            synchronized (DeviceServiceGrpc.class) {
+                if ((getAddDeviceMethod = DeviceServiceGrpc.getAddDeviceMethod) == null) {
+                    DeviceServiceGrpc.getAddDeviceMethod = getAddDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "AddDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Device.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("AddDevice")).build();
+                }
+            }
+        }
+        return getAddDeviceMethod;
     }
-    return getAddDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getConfigureDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ConfigureDevice",
-      requestType = context.ContextOuterClass.Device.class,
-      responseType = context.ContextOuterClass.DeviceId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device,
-      context.ContextOuterClass.DeviceId> getConfigureDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getConfigureDeviceMethod;
-    if ((getConfigureDeviceMethod = DeviceServiceGrpc.getConfigureDeviceMethod) == null) {
-      synchronized (DeviceServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getConfigureDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ConfigureDevice", requestType = context.ContextOuterClass.Device.class, responseType = context.ContextOuterClass.DeviceId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getConfigureDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId> getConfigureDeviceMethod;
         if ((getConfigureDeviceMethod = DeviceServiceGrpc.getConfigureDeviceMethod) == null) {
-          DeviceServiceGrpc.getConfigureDeviceMethod = getConfigureDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ConfigureDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Device.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("ConfigureDevice"))
-              .build();
-        }
-      }
+            synchronized (DeviceServiceGrpc.class) {
+                if ((getConfigureDeviceMethod = DeviceServiceGrpc.getConfigureDeviceMethod) == null) {
+                    DeviceServiceGrpc.getConfigureDeviceMethod = getConfigureDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ConfigureDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Device.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("ConfigureDevice")).build();
+                }
+            }
+        }
+        return getConfigureDeviceMethod;
     }
-    return getConfigureDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Empty> getDeleteDeviceMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "DeleteDevice",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.Empty> getDeleteDeviceMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getDeleteDeviceMethod;
-    if ((getDeleteDeviceMethod = DeviceServiceGrpc.getDeleteDeviceMethod) == null) {
-      synchronized (DeviceServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getDeleteDeviceMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteDevice", requestType = context.ContextOuterClass.DeviceId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getDeleteDeviceMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty> getDeleteDeviceMethod;
         if ((getDeleteDeviceMethod = DeviceServiceGrpc.getDeleteDeviceMethod) == null) {
-          DeviceServiceGrpc.getDeleteDeviceMethod = getDeleteDeviceMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteDevice"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("DeleteDevice"))
-              .build();
-        }
-      }
+            synchronized (DeviceServiceGrpc.class) {
+                if ((getDeleteDeviceMethod = DeviceServiceGrpc.getDeleteDeviceMethod) == null) {
+                    DeviceServiceGrpc.getDeleteDeviceMethod = getDeleteDeviceMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteDevice")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("DeleteDevice")).build();
+                }
+            }
+        }
+        return getDeleteDeviceMethod;
     }
-    return getDeleteDeviceMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetInitialConfig",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = context.ContextOuterClass.DeviceConfig.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod;
-    if ((getGetInitialConfigMethod = DeviceServiceGrpc.getGetInitialConfigMethod) == null) {
-      synchronized (DeviceServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetInitialConfig", requestType = context.ContextOuterClass.DeviceId.class, responseType = context.ContextOuterClass.DeviceConfig.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig> getGetInitialConfigMethod;
         if ((getGetInitialConfigMethod = DeviceServiceGrpc.getGetInitialConfigMethod) == null) {
-          DeviceServiceGrpc.getGetInitialConfigMethod = getGetInitialConfigMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInitialConfig"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceConfig.getDefaultInstance()))
-              .setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("GetInitialConfig"))
-              .build();
-        }
-      }
-    }
-    return getGetInitialConfigMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<device.Device.MonitoringSettings,
-      context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "MonitorDeviceKpi",
-      requestType = device.Device.MonitoringSettings.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<device.Device.MonitoringSettings,
-      context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod() {
-    io.grpc.MethodDescriptor<device.Device.MonitoringSettings, context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod;
-    if ((getMonitorDeviceKpiMethod = DeviceServiceGrpc.getMonitorDeviceKpiMethod) == null) {
-      synchronized (DeviceServiceGrpc.class) {
-        if ((getMonitorDeviceKpiMethod = DeviceServiceGrpc.getMonitorDeviceKpiMethod) == null) {
-          DeviceServiceGrpc.getMonitorDeviceKpiMethod = getMonitorDeviceKpiMethod =
-              io.grpc.MethodDescriptor.<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "MonitorDeviceKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  device.Device.MonitoringSettings.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("MonitorDeviceKpi"))
-              .build();
-        }
-      }
-    }
-    return getMonitorDeviceKpiMethod;
-  }
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static DeviceServiceStub newStub(io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<DeviceServiceStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceStub>() {
-        @java.lang.Override
-        public DeviceServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new DeviceServiceStub(channel, callOptions);
-        }
-      };
-    return DeviceServiceStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static DeviceServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<DeviceServiceBlockingStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceBlockingStub>() {
-        @java.lang.Override
-        public DeviceServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new DeviceServiceBlockingStub(channel, callOptions);
-        }
-      };
-    return DeviceServiceBlockingStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary calls on the service
-   */
-  public static DeviceServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<DeviceServiceFutureStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceFutureStub>() {
-        @java.lang.Override
-        public DeviceServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new DeviceServiceFutureStub(channel, callOptions);
+            synchronized (DeviceServiceGrpc.class) {
+                if ((getGetInitialConfigMethod = DeviceServiceGrpc.getGetInitialConfigMethod) == null) {
+                    DeviceServiceGrpc.getGetInitialConfigMethod = getGetInitialConfigMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInitialConfig")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceConfig.getDefaultInstance())).setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("GetInitialConfig")).build();
+                }
+            }
         }
-      };
-    return DeviceServiceFutureStub.newStub(factory, channel);
-  }
+        return getGetInitialConfigMethod;
+    }
 
-  /**
-   */
-  public static abstract class DeviceServiceImplBase implements io.grpc.BindableService {
+    private static volatile io.grpc.MethodDescriptor<device.Device.MonitoringSettings, context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod;
 
-    /**
-     */
-    public void addDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver);
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "MonitorDeviceKpi", requestType = device.Device.MonitoringSettings.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<device.Device.MonitoringSettings, context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod() {
+        io.grpc.MethodDescriptor<device.Device.MonitoringSettings, context.ContextOuterClass.Empty> getMonitorDeviceKpiMethod;
+        if ((getMonitorDeviceKpiMethod = DeviceServiceGrpc.getMonitorDeviceKpiMethod) == null) {
+            synchronized (DeviceServiceGrpc.class) {
+                if ((getMonitorDeviceKpiMethod = DeviceServiceGrpc.getMonitorDeviceKpiMethod) == null) {
+                    DeviceServiceGrpc.getMonitorDeviceKpiMethod = getMonitorDeviceKpiMethod = io.grpc.MethodDescriptor.<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "MonitorDeviceKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(device.Device.MonitoringSettings.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new DeviceServiceMethodDescriptorSupplier("MonitorDeviceKpi")).build();
+                }
+            }
+        }
+        return getMonitorDeviceKpiMethod;
     }
 
     /**
+     * Creates a new async stub that supports all call types for the service
      */
-    public void configureDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver);
+    public static DeviceServiceStub newStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<DeviceServiceStub> factory = new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceStub>() {
+
+            @java.lang.Override
+            public DeviceServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new DeviceServiceStub(channel, callOptions);
+            }
+        };
+        return DeviceServiceStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new blocking-style stub that supports unary and streaming output calls on the service
      */
-    public void deleteDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver);
+    public static DeviceServiceBlockingStub newBlockingStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<DeviceServiceBlockingStub> factory = new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceBlockingStub>() {
+
+            @java.lang.Override
+            public DeviceServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new DeviceServiceBlockingStub(channel, callOptions);
+            }
+        };
+        return DeviceServiceBlockingStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new ListenableFuture-style stub that supports unary calls on the service
      */
-    public void getInitialConfig(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver);
+    public static DeviceServiceFutureStub newFutureStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<DeviceServiceFutureStub> factory = new io.grpc.stub.AbstractStub.StubFactory<DeviceServiceFutureStub>() {
+
+            @java.lang.Override
+            public DeviceServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new DeviceServiceFutureStub(channel, callOptions);
+            }
+        };
+        return DeviceServiceFutureStub.newStub(factory, channel);
     }
 
     /**
      */
-    public void monitorDeviceKpi(device.Device.MonitoringSettings request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver);
-    }
+    public interface AsyncService {
 
-    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            getAddDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Device,
-                context.ContextOuterClass.DeviceId>(
-                  this, METHODID_ADD_DEVICE)))
-          .addMethod(
-            getConfigureDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Device,
-                context.ContextOuterClass.DeviceId>(
-                  this, METHODID_CONFIGURE_DEVICE)))
-          .addMethod(
-            getDeleteDeviceMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_DELETE_DEVICE)))
-          .addMethod(
-            getGetInitialConfigMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                context.ContextOuterClass.DeviceConfig>(
-                  this, METHODID_GET_INITIAL_CONFIG)))
-          .addMethod(
-            getMonitorDeviceKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                device.Device.MonitoringSettings,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_MONITOR_DEVICE_KPI)))
-          .build();
-    }
-  }
-
-  /**
-   */
-  public static final class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub<DeviceServiceStub> {
-    private DeviceServiceStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        default void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getAddDeviceMethod(), responseObserver);
+        }
 
-    @java.lang.Override
-    protected DeviceServiceStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new DeviceServiceStub(channel, callOptions);
-    }
+        /**
+         */
+        default void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getConfigureDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void addDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getAddDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteDeviceMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void configureDevice(context.ContextOuterClass.Device request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getConfigureDeviceMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInitialConfigMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void deleteDevice(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getDeleteDeviceMethod(), getCallOptions()), request, responseObserver);
+        /**
+         */
+        default void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorDeviceKpiMethod(), responseObserver);
+        }
     }
 
     /**
+     * Base class for the server implementation of the service DeviceService.
      */
-    public void getInitialConfig(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetInitialConfigMethod(), getCallOptions()), request, responseObserver);
+    public static abstract class DeviceServiceImplBase implements io.grpc.BindableService, AsyncService {
+
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return DeviceServiceGrpc.bindService(this);
+        }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service DeviceService.
      */
-    public void monitorDeviceKpi(device.Device.MonitoringSettings request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getMonitorDeviceKpiMethod(), getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   */
-  public static final class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<DeviceServiceBlockingStub> {
-    private DeviceServiceBlockingStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+    public static class DeviceServiceStub extends io.grpc.stub.AbstractAsyncStub<DeviceServiceStub> {
 
-    @java.lang.Override
-    protected DeviceServiceBlockingStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new DeviceServiceBlockingStub(channel, callOptions);
-    }
+        private DeviceServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceId addDevice(context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getAddDeviceMethod(), getCallOptions(), request);
-    }
+        @java.lang.Override
+        protected DeviceServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new DeviceServiceStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceId configureDevice(context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getConfigureDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void addDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getAddDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty deleteDevice(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getDeleteDeviceMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void configureDevice(context.ContextOuterClass.Device request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getConfigureDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.DeviceConfig getInitialConfig(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetInitialConfigMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void deleteDevice(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteDeviceMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty monitorDeviceKpi(device.Device.MonitoringSettings request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getMonitorDeviceKpiMethod(), getCallOptions(), request);
-    }
-  }
-
-  /**
-   */
-  public static final class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub<DeviceServiceFutureStub> {
-    private DeviceServiceFutureStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        public void getInitialConfig(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetInitialConfigMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    @java.lang.Override
-    protected DeviceServiceFutureStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new DeviceServiceFutureStub(channel, callOptions);
+        /**
+         */
+        public void monitorDeviceKpi(device.Device.MonitoringSettings request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getMonitorDeviceKpiMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service DeviceService.
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> addDevice(
-        context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getAddDeviceMethod(), getCallOptions()), request);
-    }
+    public static class DeviceServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<DeviceServiceBlockingStub> {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> configureDevice(
-        context.ContextOuterClass.Device request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getConfigureDeviceMethod(), getCallOptions()), request);
-    }
+        private DeviceServiceBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteDevice(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getDeleteDeviceMethod(), getCallOptions()), request);
-    }
+        @java.lang.Override
+        protected DeviceServiceBlockingStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new DeviceServiceBlockingStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceConfig> getInitialConfig(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetInitialConfigMethod(), getCallOptions()), request);
+        /**
+         */
+        public context.ContextOuterClass.DeviceId addDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getAddDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceId configureDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getConfigureDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty deleteDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteDeviceMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.DeviceConfig getInitialConfig(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetInitialConfigMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public context.ContextOuterClass.Empty monitorDeviceKpi(device.Device.MonitoringSettings request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getMonitorDeviceKpiMethod(), getCallOptions(), request);
+        }
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service DeviceService.
      */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> monitorDeviceKpi(
-        device.Device.MonitoringSettings request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getMonitorDeviceKpiMethod(), getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_ADD_DEVICE = 0;
-  private static final int METHODID_CONFIGURE_DEVICE = 1;
-  private static final int METHODID_DELETE_DEVICE = 2;
-  private static final int METHODID_GET_INITIAL_CONFIG = 3;
-  private static final int METHODID_MONITOR_DEVICE_KPI = 4;
-
-  private static final class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final DeviceServiceImplBase serviceImpl;
-    private final int methodId;
-
-    MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
+    public static class DeviceServiceFutureStub extends io.grpc.stub.AbstractFutureStub<DeviceServiceFutureStub> {
+
+        private DeviceServiceFutureStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
+
+        @java.lang.Override
+        protected DeviceServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new DeviceServiceFutureStub(channel, callOptions);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getAddDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getConfigureDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteDeviceMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetInitialConfigMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getMonitorDeviceKpiMethod(), getCallOptions()), request);
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_ADD_DEVICE:
-          serviceImpl.addDevice((context.ContextOuterClass.Device) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
-          break;
-        case METHODID_CONFIGURE_DEVICE:
-          serviceImpl.configureDevice((context.ContextOuterClass.Device) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
-          break;
-        case METHODID_DELETE_DEVICE:
-          serviceImpl.deleteDevice((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_INITIAL_CONFIG:
-          serviceImpl.getInitialConfig((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig>) responseObserver);
-          break;
-        case METHODID_MONITOR_DEVICE_KPI:
-          serviceImpl.monitorDeviceKpi((device.Device.MonitoringSettings) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
+    private static final int METHODID_ADD_DEVICE = 0;
+
+    private static final int METHODID_CONFIGURE_DEVICE = 1;
+
+    private static final int METHODID_DELETE_DEVICE = 2;
+
+    private static final int METHODID_GET_INITIAL_CONFIG = 3;
+
+    private static final int METHODID_MONITOR_DEVICE_KPI = 4;
+
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
+        private final AsyncService serviceImpl;
+
+        private final int methodId;
+
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                case METHODID_ADD_DEVICE:
+                    serviceImpl.addDevice((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
+                    break;
+                case METHODID_CONFIGURE_DEVICE:
+                    serviceImpl.configureDevice((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver);
+                    break;
+                case METHODID_DELETE_DEVICE:
+                    serviceImpl.deleteDevice((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_INITIAL_CONFIG:
+                    serviceImpl.getInitialConfig((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig>) responseObserver);
+                    break;
+                case METHODID_MONITOR_DEVICE_KPI:
+                    serviceImpl.monitorDeviceKpi((device.Device.MonitoringSettings) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                default:
+                    throw new AssertionError();
+            }
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                default:
+                    throw new AssertionError();
+            }
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getAddDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_ADD_DEVICE))).addMethod(getConfigureDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(service, METHODID_CONFIGURE_DEVICE))).addMethod(getDeleteDeviceMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_DEVICE))).addMethod(getGetInitialConfigMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(service, METHODID_GET_INITIAL_CONFIG))).addMethod(getMonitorDeviceKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_DEVICE_KPI))).build();
     }
-  }
 
-  private static abstract class DeviceServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
-    DeviceServiceBaseDescriptorSupplier() {}
+    private static abstract class DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+
+        DeviceServiceBaseDescriptorSupplier() {
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
-      return device.Device.getDescriptor();
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+            return device.Device.getDescriptor();
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+            return getFileDescriptor().findServiceByName("DeviceService");
+        }
     }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
-      return getFileDescriptor().findServiceByName("DeviceService");
+    private static final class DeviceServiceFileDescriptorSupplier extends DeviceServiceBaseDescriptorSupplier {
+
+        DeviceServiceFileDescriptorSupplier() {
+        }
     }
-  }
 
-  private static final class DeviceServiceFileDescriptorSupplier
-      extends DeviceServiceBaseDescriptorSupplier {
-    DeviceServiceFileDescriptorSupplier() {}
-  }
+    private static final class DeviceServiceMethodDescriptorSupplier extends DeviceServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
 
-  private static final class DeviceServiceMethodDescriptorSupplier
-      extends DeviceServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
-    private final String methodName;
+        private final String methodName;
 
-    DeviceServiceMethodDescriptorSupplier(String methodName) {
-      this.methodName = methodName;
-    }
+        DeviceServiceMethodDescriptorSupplier(String methodName) {
+            this.methodName = methodName;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
-      return getServiceDescriptor().findMethodByName(methodName);
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+            return getServiceDescriptor().findMethodByName(methodName);
+        }
     }
-  }
 
-  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+    private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
 
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    io.grpc.ServiceDescriptor result = serviceDescriptor;
-    if (result == null) {
-      synchronized (DeviceServiceGrpc.class) {
-        result = serviceDescriptor;
+    public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+        io.grpc.ServiceDescriptor result = serviceDescriptor;
         if (result == null) {
-          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
-              .setSchemaDescriptor(new DeviceServiceFileDescriptorSupplier())
-              .addMethod(getAddDeviceMethod())
-              .addMethod(getConfigureDeviceMethod())
-              .addMethod(getDeleteDeviceMethod())
-              .addMethod(getGetInitialConfigMethod())
-              .addMethod(getMonitorDeviceKpiMethod())
-              .build();
-        }
-      }
+            synchronized (DeviceServiceGrpc.class) {
+                result = serviceDescriptor;
+                if (result == null) {
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new DeviceServiceFileDescriptorSupplier()).addMethod(getAddDeviceMethod()).addMethod(getConfigureDeviceMethod()).addMethod(getDeleteDeviceMethod()).addMethod(getGetInitialConfigMethod()).addMethod(getMonitorDeviceKpiMethod()).build();
+                }
+            }
+        }
+        return result;
     }
-    return result;
-  }
 }
diff --git a/src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
index 096784b5a39fa66afbe2ff5402b8beec6c294730..e59fc5ae262a6bc85d6cdd64b981cce3a138fb63 100644
--- a/src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
@@ -6,18 +6,18 @@ import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: device.proto")
-public final class MutinyDeviceServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
-    private MutinyDeviceServiceGrpc() {}
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: device.proto")
+public final class MutinyDeviceServiceGrpc implements io.quarkus.grpc.MutinyGrpc {
+
+    private MutinyDeviceServiceGrpc() {
+    }
 
     public static MutinyDeviceServiceStub newMutinyStub(io.grpc.Channel channel) {
         return new MutinyDeviceServiceStub(channel);
     }
 
-    
-    public static final class MutinyDeviceServiceStub extends io.grpc.stub.AbstractStub<MutinyDeviceServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
+    public static class MutinyDeviceServiceStub extends io.grpc.stub.AbstractStub<MutinyDeviceServiceStub> implements io.quarkus.grpc.MutinyStub {
+
         private DeviceServiceGrpc.DeviceServiceStub delegateStub;
 
         private MutinyDeviceServiceStub(io.grpc.Channel channel) {
@@ -35,127 +35,83 @@ public final class MutinyDeviceServiceGrpc implements io.quarkus.grpc.runtime.Mu
             return new MutinyDeviceServiceStub(channel, callOptions);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::addDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::addDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::configureDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::configureDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteDevice);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteDevice);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getInitialConfig);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getInitialConfig);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::monitorDeviceKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::monitorDeviceKpi);
         }
-
     }
 
-    
     public static abstract class DeviceServiceImplBase implements io.grpc.BindableService {
 
         private String compression;
+
         /**
-        * Set whether the server will try to use a compressed response.
-        *
-        * @param compression the compression, e.g {@code gzip}
-        */
+         * Set whether the server will try to use a compressed response.
+         *
+         * @param compression the compression, e.g {@code gzip}
+         */
         public DeviceServiceImplBase withCompression(String compression) {
-        this.compression = compression;
-        return this;
+            this.compression = compression;
+            return this;
         }
 
-
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> addDevice(context.ContextOuterClass.Device request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceId> configureDevice(context.ContextOuterClass.Device request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteDevice(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.DeviceConfig> getInitialConfig(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorDeviceKpi(device.Device.MonitoringSettings request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-                    .addMethod(
-                            device.DeviceServiceGrpc.getAddDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Device,
-                                            context.ContextOuterClass.DeviceId>(
-                                            this, METHODID_ADD_DEVICE, compression)))
-                    .addMethod(
-                            device.DeviceServiceGrpc.getConfigureDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Device,
-                                            context.ContextOuterClass.DeviceId>(
-                                            this, METHODID_CONFIGURE_DEVICE, compression)))
-                    .addMethod(
-                            device.DeviceServiceGrpc.getDeleteDeviceMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_DELETE_DEVICE, compression)))
-                    .addMethod(
-                            device.DeviceServiceGrpc.getGetInitialConfigMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceId,
-                                            context.ContextOuterClass.DeviceConfig>(
-                                            this, METHODID_GET_INITIAL_CONFIG, compression)))
-                    .addMethod(
-                            device.DeviceServiceGrpc.getMonitorDeviceKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            device.Device.MonitoringSettings,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_MONITOR_DEVICE_KPI, compression)))
-                    .build();
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(device.DeviceServiceGrpc.getAddDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_ADD_DEVICE, compression))).addMethod(device.DeviceServiceGrpc.getConfigureDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Device, context.ContextOuterClass.DeviceId>(this, METHODID_CONFIGURE_DEVICE, compression))).addMethod(device.DeviceServiceGrpc.getDeleteDeviceMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_DEVICE, compression))).addMethod(device.DeviceServiceGrpc.getGetInitialConfigMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceConfig>(this, METHODID_GET_INITIAL_CONFIG, compression))).addMethod(device.DeviceServiceGrpc.getMonitorDeviceKpiMethod(), asyncUnaryCall(new MethodHandlers<device.Device.MonitoringSettings, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_DEVICE_KPI, compression))).build();
         }
     }
 
     private static final int METHODID_ADD_DEVICE = 0;
+
     private static final int METHODID_CONFIGURE_DEVICE = 1;
+
     private static final int METHODID_DELETE_DEVICE = 2;
+
     private static final int METHODID_GET_INITIAL_CONFIG = 3;
+
     private static final int METHODID_MONITOR_DEVICE_KPI = 4;
 
-    private static final class MethodHandlers<Req, Resp> implements
-            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
         private final DeviceServiceImplBase serviceImpl;
+
         private final int methodId;
+
         private final String compression;
 
         MethodHandlers(DeviceServiceImplBase serviceImpl, int methodId, String compression) {
@@ -167,36 +123,21 @@ public final class MutinyDeviceServiceGrpc implements io.quarkus.grpc.runtime.Mu
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 case METHODID_ADD_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Device) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver,
-                            compression,
-                            serviceImpl::addDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver, compression, serviceImpl::addDevice);
                     break;
                 case METHODID_CONFIGURE_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Device) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver,
-                            compression,
-                            serviceImpl::configureDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Device) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceId>) responseObserver, compression, serviceImpl::configureDevice);
                     break;
                 case METHODID_DELETE_DEVICE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::deleteDevice);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::deleteDevice);
                     break;
                 case METHODID_GET_INITIAL_CONFIG:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig>) responseObserver,
-                            compression,
-                            serviceImpl::getInitialConfig);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.DeviceConfig>) responseObserver, compression, serviceImpl::getInitialConfig);
                     break;
                 case METHODID_MONITOR_DEVICE_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((device.Device.MonitoringSettings) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::monitorDeviceKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((device.Device.MonitoringSettings) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::monitorDeviceKpi);
                     break;
                 default:
                     throw new java.lang.AssertionError();
@@ -206,11 +147,10 @@ public final class MutinyDeviceServiceGrpc implements io.quarkus.grpc.runtime.Mu
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 default:
                     throw new java.lang.AssertionError();
             }
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
index 66ce0f8f234c62f17c7e3af82d0f22a0a4c26c58..9621efb4beed8543be18a4bd369de73f52b2e076 100644
--- a/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
+++ b/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
@@ -1,312 +1,311 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: kpi_sample_types.proto
-
 package kpi_sample_types;
 
 public final class KpiSampleTypes {
-  private KpiSampleTypes() {}
-  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 kpi_sample_types.KpiSampleType}
-   */
-  public enum KpiSampleType
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>KPISAMPLETYPE_UNKNOWN = 0;</code>
-     */
-    KPISAMPLETYPE_UNKNOWN(0),
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_TRANSMITTED = 101;</code>
-     */
-    KPISAMPLETYPE_PACKETS_TRANSMITTED(101),
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
-     */
-    KPISAMPLETYPE_PACKETS_RECEIVED(102),
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
-     */
-    KPISAMPLETYPE_PACKETS_DROPPED(103),
-    /**
-     * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
-     */
-    KPISAMPLETYPE_BYTES_TRANSMITTED(201),
-    /**
-     * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
-     */
-    KPISAMPLETYPE_BYTES_RECEIVED(202),
-    /**
-     * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
-     */
-    KPISAMPLETYPE_BYTES_DROPPED(203),
-    /**
-     * <code>KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS = 301;</code>
-     */
-    KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS(301),
-    /**
-     * <code>KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS = 302;</code>
-     */
-    KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS(302),
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
-     */
-    KPISAMPLETYPE_ML_CONFIDENCE(401),
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
-     */
-    KPISAMPLETYPE_OPTICAL_SECURITY_STATUS(501),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS(601),
-    /**
-     * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
-     */
-    KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS(602),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_ATTACKERS(603),
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
-     */
-    KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS(604),
-    /**
-     * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
-     */
-    KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO(605),
-    /**
-     * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
-     */
-    KPISAMPLETYPE_SERVICE_LATENCY_MS(701),
-    UNRECOGNIZED(-1),
-    ;
-
-    /**
-     * <code>KPISAMPLETYPE_UNKNOWN = 0;</code>
-     */
-    public static final int KPISAMPLETYPE_UNKNOWN_VALUE = 0;
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_TRANSMITTED = 101;</code>
-     */
-    public static final int KPISAMPLETYPE_PACKETS_TRANSMITTED_VALUE = 101;
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
-     */
-    public static final int KPISAMPLETYPE_PACKETS_RECEIVED_VALUE = 102;
-    /**
-     * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
-     */
-    public static final int KPISAMPLETYPE_PACKETS_DROPPED_VALUE = 103;
-    /**
-     * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
-     */
-    public static final int KPISAMPLETYPE_BYTES_TRANSMITTED_VALUE = 201;
-    /**
-     * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
-     */
-    public static final int KPISAMPLETYPE_BYTES_RECEIVED_VALUE = 202;
-    /**
-     * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
-     */
-    public static final int KPISAMPLETYPE_BYTES_DROPPED_VALUE = 203;
-    /**
-     * <code>KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS = 301;</code>
-     */
-    public static final int KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS_VALUE = 301;
-    /**
-     * <code>KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS = 302;</code>
-     */
-    public static final int KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS_VALUE = 302;
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
-     */
-    public static final int KPISAMPLETYPE_ML_CONFIDENCE_VALUE = 401;
-    /**
-     * <pre>
-     *. can be used by both optical and L3 without any issue
-     * </pre>
-     *
-     * <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
-     */
-    public static final int KPISAMPLETYPE_OPTICAL_SECURITY_STATUS_VALUE = 501;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS_VALUE = 601;
-    /**
-     * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS_VALUE = 602;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACKERS_VALUE = 603;
-    /**
-     * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS_VALUE = 604;
-    /**
-     * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
-     */
-    public static final int KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO_VALUE = 605;
-    /**
-     * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
-     */
-    public static final int KPISAMPLETYPE_SERVICE_LATENCY_MS_VALUE = 701;
 
+    private KpiSampleTypes() {
+    }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
     }
 
-    /**
-     * @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 KpiSampleType valueOf(int value) {
-      return forNumber(value);
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code kpi_sample_types.KpiSampleType}
      */
-    public static KpiSampleType forNumber(int value) {
-      switch (value) {
-        case 0: return KPISAMPLETYPE_UNKNOWN;
-        case 101: return KPISAMPLETYPE_PACKETS_TRANSMITTED;
-        case 102: return KPISAMPLETYPE_PACKETS_RECEIVED;
-        case 103: return KPISAMPLETYPE_PACKETS_DROPPED;
-        case 201: return KPISAMPLETYPE_BYTES_TRANSMITTED;
-        case 202: return KPISAMPLETYPE_BYTES_RECEIVED;
-        case 203: return KPISAMPLETYPE_BYTES_DROPPED;
-        case 301: return KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS;
-        case 302: return KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS;
-        case 401: return KPISAMPLETYPE_ML_CONFIDENCE;
-        case 501: return KPISAMPLETYPE_OPTICAL_SECURITY_STATUS;
-        case 601: return KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS;
-        case 602: return KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS;
-        case 603: return KPISAMPLETYPE_L3_UNIQUE_ATTACKERS;
-        case 604: return KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS;
-        case 605: return KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO;
-        case 701: return KPISAMPLETYPE_SERVICE_LATENCY_MS;
-        default: return null;
-      }
-    }
+    public enum KpiSampleType implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>KPISAMPLETYPE_UNKNOWN = 0;</code>
+         */
+        KPISAMPLETYPE_UNKNOWN(0),
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_TRANSMITTED = 101;</code>
+         */
+        KPISAMPLETYPE_PACKETS_TRANSMITTED(101),
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
+         */
+        KPISAMPLETYPE_PACKETS_RECEIVED(102),
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
+         */
+        KPISAMPLETYPE_PACKETS_DROPPED(103),
+        /**
+         * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
+         */
+        KPISAMPLETYPE_BYTES_TRANSMITTED(201),
+        /**
+         * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
+         */
+        KPISAMPLETYPE_BYTES_RECEIVED(202),
+        /**
+         * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
+         */
+        KPISAMPLETYPE_BYTES_DROPPED(203),
+        /**
+         * <code>KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS = 301;</code>
+         */
+        KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS(301),
+        /**
+         * <code>KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS = 302;</code>
+         */
+        KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS(302),
+        /**
+         *  <pre>
+         * . can be used by both optical and L3 without any issue
+         *  </pre>
+         *
+         *  <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
+         */
+        KPISAMPLETYPE_ML_CONFIDENCE(401),
+        /**
+         *  <pre>
+         * . can be used by both optical and L3 without any issue
+         *  </pre>
+         *
+         *  <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
+         */
+        KPISAMPLETYPE_OPTICAL_SECURITY_STATUS(501),
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
+         */
+        KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS(601),
+        /**
+         * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
+         */
+        KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS(602),
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
+         */
+        KPISAMPLETYPE_L3_UNIQUE_ATTACKERS(603),
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
+         */
+        KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS(604),
+        /**
+         * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
+         */
+        KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO(605),
+        /**
+         * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
+         */
+        KPISAMPLETYPE_SERVICE_LATENCY_MS(701),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>KPISAMPLETYPE_UNKNOWN = 0;</code>
+         */
+        public static final int KPISAMPLETYPE_UNKNOWN_VALUE = 0;
+
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_TRANSMITTED = 101;</code>
+         */
+        public static final int KPISAMPLETYPE_PACKETS_TRANSMITTED_VALUE = 101;
+
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_RECEIVED = 102;</code>
+         */
+        public static final int KPISAMPLETYPE_PACKETS_RECEIVED_VALUE = 102;
+
+        /**
+         * <code>KPISAMPLETYPE_PACKETS_DROPPED = 103;</code>
+         */
+        public static final int KPISAMPLETYPE_PACKETS_DROPPED_VALUE = 103;
+
+        /**
+         * <code>KPISAMPLETYPE_BYTES_TRANSMITTED = 201;</code>
+         */
+        public static final int KPISAMPLETYPE_BYTES_TRANSMITTED_VALUE = 201;
+
+        /**
+         * <code>KPISAMPLETYPE_BYTES_RECEIVED = 202;</code>
+         */
+        public static final int KPISAMPLETYPE_BYTES_RECEIVED_VALUE = 202;
+
+        /**
+         * <code>KPISAMPLETYPE_BYTES_DROPPED = 203;</code>
+         */
+        public static final int KPISAMPLETYPE_BYTES_DROPPED_VALUE = 203;
+
+        /**
+         * <code>KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS = 301;</code>
+         */
+        public static final int KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS_VALUE = 301;
+
+        /**
+         * <code>KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS = 302;</code>
+         */
+        public static final int KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS_VALUE = 302;
+
+        /**
+         *  <pre>
+         * . can be used by both optical and L3 without any issue
+         *  </pre>
+         *
+         *  <code>KPISAMPLETYPE_ML_CONFIDENCE = 401;</code>
+         */
+        public static final int KPISAMPLETYPE_ML_CONFIDENCE_VALUE = 401;
+
+        /**
+         *  <pre>
+         * . can be used by both optical and L3 without any issue
+         *  </pre>
+         *
+         *  <code>KPISAMPLETYPE_OPTICAL_SECURITY_STATUS = 501;</code>
+         */
+        public static final int KPISAMPLETYPE_OPTICAL_SECURITY_STATUS_VALUE = 501;
+
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS = 601;</code>
+         */
+        public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS_VALUE = 601;
+
+        /**
+         * <code>KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS = 602;</code>
+         */
+        public static final int KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS_VALUE = 602;
+
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_ATTACKERS = 603;</code>
+         */
+        public static final int KPISAMPLETYPE_L3_UNIQUE_ATTACKERS_VALUE = 603;
+
+        /**
+         * <code>KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS = 604;</code>
+         */
+        public static final int KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS_VALUE = 604;
+
+        /**
+         * <code>KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO = 605;</code>
+         */
+        public static final int KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO_VALUE = 605;
+
+        /**
+         * <code>KPISAMPLETYPE_SERVICE_LATENCY_MS = 701;</code>
+         */
+        public static final int KPISAMPLETYPE_SERVICE_LATENCY_MS_VALUE = 701;
+
+        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 KpiSampleType 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 KpiSampleType forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return KPISAMPLETYPE_UNKNOWN;
+                case 101:
+                    return KPISAMPLETYPE_PACKETS_TRANSMITTED;
+                case 102:
+                    return KPISAMPLETYPE_PACKETS_RECEIVED;
+                case 103:
+                    return KPISAMPLETYPE_PACKETS_DROPPED;
+                case 201:
+                    return KPISAMPLETYPE_BYTES_TRANSMITTED;
+                case 202:
+                    return KPISAMPLETYPE_BYTES_RECEIVED;
+                case 203:
+                    return KPISAMPLETYPE_BYTES_DROPPED;
+                case 301:
+                    return KPISAMPLETYPE_LINK_TOTAL_CAPACITY_GBPS;
+                case 302:
+                    return KPISAMPLETYPE_LINK_USED_CAPACITY_GBPS;
+                case 401:
+                    return KPISAMPLETYPE_ML_CONFIDENCE;
+                case 501:
+                    return KPISAMPLETYPE_OPTICAL_SECURITY_STATUS;
+                case 601:
+                    return KPISAMPLETYPE_L3_UNIQUE_ATTACK_CONNS;
+                case 602:
+                    return KPISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS;
+                case 603:
+                    return KPISAMPLETYPE_L3_UNIQUE_ATTACKERS;
+                case 604:
+                    return KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CLIENTS;
+                case 605:
+                    return KPISAMPLETYPE_L3_SECURITY_STATUS_CRYPTO;
+                case 701:
+                    return KPISAMPLETYPE_SERVICE_LATENCY_MS;
+                default:
+                    return null;
+            }
+        }
+
+        public static com.google.protobuf.Internal.EnumLiteMap<KpiSampleType> internalGetValueMap() {
+            return internalValueMap;
+        }
+
+        private static final com.google.protobuf.Internal.EnumLiteMap<KpiSampleType> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<KpiSampleType>() {
 
-    public static com.google.protobuf.Internal.EnumLiteMap<KpiSampleType>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        KpiSampleType> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<KpiSampleType>() {
             public KpiSampleType findValueByNumber(int number) {
-              return KpiSampleType.forNumber(number);
+                return KpiSampleType.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 kpi_sample_types.KpiSampleTypes.getDescriptor().getEnumTypes().get(0);
+        };
+
+        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 kpi_sample_types.KpiSampleTypes.getDescriptor().getEnumTypes().get(0);
+        }
+
+        private static final KpiSampleType[] VALUES = values();
+
+        public static KpiSampleType 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 KpiSampleType(int value) {
+            this.value = value;
+        }
     }
 
-    private static final KpiSampleType[] VALUES = values();
-
-    public static KpiSampleType 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()];
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-    private final int value;
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
 
-    private KpiSampleType(int value) {
-      this.value = value;
+    static {
+        java.lang.String[] descriptorData = { "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" + "es*\260\005\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" + "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" + "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" + "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" + "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" + "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" + "PLETYPE_BYTES_DROPPED\020\313\001\022+\n&KPISAMPLETYP" + "E_LINK_TOTAL_CAPACITY_GBPS\020\255\002\022*\n%KPISAMP" + "LETYPE_LINK_USED_CAPACITY_GBPS\020\256\002\022 \n\033KPI" + "SAMPLETYPE_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLE" + "TYPE_OPTICAL_SECURITY_STATUS\020\365\003\022)\n$KPISA" + "MPLETYPE_L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KP" + "ISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&" + "\n!KPISAMPLETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220" + "\n+KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CL" + "IENTS\020\334\004\022,\n\'KPISAMPLETYPE_L3_SECURITY_ST" + "ATUS_CRYPTO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_" + "LATENCY_MS\020\275\005b\006proto3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] {});
     }
-
-    // @@protoc_insertion_point(enum_scope:kpi_sample_types.KpiSampleType)
-  }
-
-
-  public static com.google.protobuf.Descriptors.FileDescriptor
-      getDescriptor() {
-    return descriptor;
-  }
-  private static  com.google.protobuf.Descriptors.FileDescriptor
-      descriptor;
-  static {
-    java.lang.String[] descriptorData = {
-      "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" +
-      "es*\260\005\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
-      "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" +
-      "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" +
-      "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" +
-      "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" +
-      "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" +
-      "PLETYPE_BYTES_DROPPED\020\313\001\022+\n&KPISAMPLETYP" +
-      "E_LINK_TOTAL_CAPACITY_GBPS\020\255\002\022*\n%KPISAMP" +
-      "LETYPE_LINK_USED_CAPACITY_GBPS\020\256\002\022 \n\033KPI" +
-      "SAMPLETYPE_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLE" +
-      "TYPE_OPTICAL_SECURITY_STATUS\020\365\003\022)\n$KPISA" +
-      "MPLETYPE_L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KP" +
-      "ISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&" +
-      "\n!KPISAMPLETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220" +
-      "\n+KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CL" +
-      "IENTS\020\334\004\022,\n\'KPISAMPLETYPE_L3_SECURITY_ST" +
-      "ATUS_CRYPTO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_" +
-      "LATENCY_MS\020\275\005b\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-        });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
index ef9ef6be6341d87943f68503d7ddc535b3920140..2f98ce3eb35a8ba9fda3a6d6bf4c17079c720bbe 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -1,21801 +1,19937 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: monitoring.proto
-
 package monitoring;
 
 public final class Monitoring {
-  private Monitoring() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistryLite registry) {
-  }
-
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistry registry) {
-    registerAllExtensions(
-        (com.google.protobuf.ExtensionRegistryLite) registry);
-  }
-  public interface KpiDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptor)
-      com.google.protobuf.MessageOrBuilder {
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+    private Monitoring() {
+    }
+
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
+    }
+
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
+    }
+
+    public interface KpiDescriptorOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptor)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>string kpi_description = 2;</code>
+         * @return The kpiDescription.
+         */
+        java.lang.String getKpiDescription();
+
+        /**
+         * <code>string kpi_description = 2;</code>
+         * @return The bytes for kpiDescription.
+         */
+        com.google.protobuf.ByteString getKpiDescriptionBytes();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        monitoring.Monitoring.KpiId getKpiIdList(int index);
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        int getKpiIdListCount();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(int index);
+
+        /**
+         * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+         * @return The enum numeric value on the wire for kpiSampleType.
+         */
+        int getKpiSampleTypeValue();
+
+        /**
+         * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+         * @return The kpiSampleType.
+         */
+        kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType();
+
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         * @return Whether the deviceId field is set.
+         */
+        boolean hasDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         * @return The deviceId.
+         */
+        context.ContextOuterClass.DeviceId getDeviceId();
+
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         * @return Whether the endpointId field is set.
+         */
+        boolean hasEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         * @return The endpointId.
+         */
+        context.ContextOuterClass.EndPointId getEndpointId();
+
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         */
+        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         * @return Whether the serviceId field is set.
+         */
+        boolean hasServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         * @return The serviceId.
+         */
+        context.ContextOuterClass.ServiceId getServiceId();
+
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         */
+        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         * @return Whether the sliceId field is set.
+         */
+        boolean hasSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         * @return The sliceId.
+         */
+        context.ContextOuterClass.SliceId getSliceId();
+
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         */
+        context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         * @return Whether the connectionId field is set.
+         */
+        boolean hasConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         * @return The connectionId.
+         */
+        context.ContextOuterClass.ConnectionId getConnectionId();
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         */
+        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         * @return Whether the linkId field is set.
+         */
+        boolean hasLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         * @return The linkId.
+         */
+        context.ContextOuterClass.LinkId getLinkId();
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         */
+        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
+    }
 
     /**
-     * <code>string kpi_description = 2;</code>
-     * @return The kpiDescription.
-     */
-    java.lang.String getKpiDescription();
-    /**
-     * <code>string kpi_description = 2;</code>
-     * @return The bytes for kpiDescription.
+     * Protobuf type {@code monitoring.KpiDescriptor}
      */
-    com.google.protobuf.ByteString
-        getKpiDescriptionBytes();
+    public static final class KpiDescriptor extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptor)
+    KpiDescriptorOrBuilder {
 
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdListList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiIdList(int index);
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    int getKpiIdListCount();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-        int index);
+        private static final long serialVersionUID = 0L;
 
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    int getKpiSampleTypeValue();
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The kpiSampleType.
-     */
-    kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType();
+        // Use KpiDescriptor.newBuilder() to construct.
+        private KpiDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return Whether the deviceId field is set.
-     */
-    boolean hasDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return The deviceId.
-     */
-    context.ContextOuterClass.DeviceId getDeviceId();
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
+        private KpiDescriptor() {
+            kpiDescription_ = "";
+            kpiIdList_ = java.util.Collections.emptyList();
+            kpiSampleType_ = 0;
+        }
 
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return Whether the endpointId field is set.
-     */
-    boolean hasEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return The endpointId.
-     */
-    context.ContextOuterClass.EndPointId getEndpointId();
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     */
-    context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiDescriptor();
+        }
 
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return Whether the serviceId field is set.
-     */
-    boolean hasServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return The serviceId.
-     */
-    context.ContextOuterClass.ServiceId getServiceId();
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     */
-    context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
+        }
 
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return Whether the sliceId field is set.
-     */
-    boolean hasSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return The sliceId.
-     */
-    context.ContextOuterClass.SliceId getSliceId();
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     */
-    context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiDescriptor.class, monitoring.Monitoring.KpiDescriptor.Builder.class);
+        }
 
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return Whether the connectionId field is set.
-     */
-    boolean hasConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return The connectionId.
-     */
-    context.ContextOuterClass.ConnectionId getConnectionId();
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     */
-    context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+        public static final int KPI_ID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     * @return Whether the linkId field is set.
-     */
-    boolean hasLinkId();
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     * @return The linkId.
-     */
-    context.ContextOuterClass.LinkId getLinkId();
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     */
-    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiDescriptor}
-   */
-  public static final class KpiDescriptor extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptor)
-      KpiDescriptorOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiDescriptor.newBuilder() to construct.
-    private KpiDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiDescriptor() {
-      kpiDescription_ = "";
-      kpiIdList_ = java.util.Collections.emptyList();
-      kpiSampleType_ = 0;
-    }
+        private monitoring.Monitoring.KpiId kpiId_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiDescriptor();
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiDescriptor(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              kpiDescription_ = s;
-              break;
-            }
-            case 26: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiIdList_.add(
-                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-              break;
-            }
-            case 32: {
-              int rawValue = input.readEnum();
-
-              kpiSampleType_ = rawValue;
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (deviceId_ != null) {
-                subBuilder = deviceId_.toBuilder();
-              }
-              deviceId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(deviceId_);
-                deviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.EndPointId.Builder subBuilder = null;
-              if (endpointId_ != null) {
-                subBuilder = endpointId_.toBuilder();
-              }
-              endpointId_ = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endpointId_);
-                endpointId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 58: {
-              context.ContextOuterClass.ServiceId.Builder subBuilder = null;
-              if (serviceId_ != null) {
-                subBuilder = serviceId_.toBuilder();
-              }
-              serviceId_ = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(serviceId_);
-                serviceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 66: {
-              context.ContextOuterClass.SliceId.Builder subBuilder = null;
-              if (sliceId_ != null) {
-                subBuilder = sliceId_.toBuilder();
-              }
-              sliceId_ = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(sliceId_);
-                sliceId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 74: {
-              context.ContextOuterClass.ConnectionId.Builder subBuilder = null;
-              if (connectionId_ != null) {
-                subBuilder = connectionId_.toBuilder();
-              }
-              connectionId_ = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(connectionId_);
-                connectionId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 82: {
-              context.ContextOuterClass.LinkId.Builder subBuilder = null;
-              if (linkId_ != null) {
-                subBuilder = linkId_.toBuilder();
-              }
-              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(linkId_);
-                linkId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiDescriptor.class, monitoring.Monitoring.KpiDescriptor.Builder.class);
-    }
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
 
-    public static final int KPI_DESCRIPTION_FIELD_NUMBER = 2;
-    private volatile java.lang.Object kpiDescription_;
-    /**
-     * <code>string kpi_description = 2;</code>
-     * @return The kpiDescription.
-     */
-    @java.lang.Override
-    public java.lang.String getKpiDescription() {
-      java.lang.Object ref = kpiDescription_;
-      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();
-        kpiDescription_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string kpi_description = 2;</code>
-     * @return The bytes for kpiDescription.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getKpiDescriptionBytes() {
-      java.lang.Object ref = kpiDescription_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        kpiDescription_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object kpiDescription_ = "";
 
-    public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-      return kpiIdList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdListOrBuilderList() {
-      return kpiIdList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public int getKpiIdListCount() {
-      return kpiIdList_.size();
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-      return kpiIdList_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-        int index) {
-      return kpiIdList_.get(index);
-    }
+        /**
+         * <code>string kpi_description = 2;</code>
+         * @return The kpiDescription.
+         */
+        @java.lang.Override
+        public java.lang.String getKpiDescription() {
+            java.lang.Object ref = kpiDescription_;
+            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();
+                kpiDescription_ = s;
+                return s;
+            }
+        }
 
-    public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
-    private int kpiSampleType_;
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The enum numeric value on the wire for kpiSampleType.
-     */
-    @java.lang.Override public int getKpiSampleTypeValue() {
-      return kpiSampleType_;
-    }
-    /**
-     * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-     * @return The kpiSampleType.
-     */
-    @java.lang.Override public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-      @SuppressWarnings("deprecation")
-      kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-      return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
-    }
+        /**
+         * <code>string kpi_description = 2;</code>
+         * @return The bytes for kpiDescription.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getKpiDescriptionBytes() {
+            java.lang.Object ref = kpiDescription_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                kpiDescription_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    public static final int DEVICE_ID_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.DeviceId deviceId_;
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return Whether the deviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDeviceId() {
-      return deviceId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     * @return The deviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDeviceId() {
-      return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-    }
-    /**
-     * <code>.context.DeviceId device_id = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-      return getDeviceId();
-    }
+        public static final int KPI_ID_LIST_FIELD_NUMBER = 3;
 
-    public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.EndPointId endpointId_;
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return Whether the endpointId field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndpointId() {
-      return endpointId_ != null;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     * @return The endpointId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointId getEndpointId() {
-      return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-    }
-    /**
-     * <code>.context.EndPointId endpoint_id = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-      return getEndpointId();
-    }
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_;
 
-    public static final int SERVICE_ID_FIELD_NUMBER = 7;
-    private context.ContextOuterClass.ServiceId serviceId_;
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return Whether the serviceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasServiceId() {
-      return serviceId_ != null;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     * @return The serviceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceId getServiceId() {
-      return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-    }
-    /**
-     * <code>.context.ServiceId service_id = 7;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-      return getServiceId();
-    }
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
+            return kpiIdList_;
+        }
 
-    public static final int SLICE_ID_FIELD_NUMBER = 8;
-    private context.ContextOuterClass.SliceId sliceId_;
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return Whether the sliceId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSliceId() {
-      return sliceId_ != null;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     * @return The sliceId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceId getSliceId() {
-      return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-    }
-    /**
-     * <code>.context.SliceId slice_id = 8;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-      return getSliceId();
-    }
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListOrBuilderList() {
+            return kpiIdList_;
+        }
 
-    public static final int CONNECTION_ID_FIELD_NUMBER = 9;
-    private context.ContextOuterClass.ConnectionId connectionId_;
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return Whether the connectionId field is set.
-     */
-    @java.lang.Override
-    public boolean hasConnectionId() {
-      return connectionId_ != null;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     * @return The connectionId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionId getConnectionId() {
-      return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-    }
-    /**
-     * <code>.context.ConnectionId connection_id = 9;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-      return getConnectionId();
-    }
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        @java.lang.Override
+        public int getKpiIdListCount() {
+            return kpiIdList_.size();
+        }
 
-    public static final int LINK_ID_FIELD_NUMBER = 10;
-    private context.ContextOuterClass.LinkId linkId_;
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     * @return Whether the linkId field is set.
-     */
-    @java.lang.Override
-    public boolean hasLinkId() {
-      return linkId_ != null;
-    }
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     * @return The linkId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkId getLinkId() {
-      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-    }
-    /**
-     * <code>.context.LinkId link_id = 10;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-      return getLinkId();
-    }
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiIdList(int index) {
+            return kpiIdList_.get(index);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        /**
+         * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(int index) {
+            return kpiIdList_.get(index);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static final int KPI_SAMPLE_TYPE_FIELD_NUMBER = 4;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        output.writeMessage(3, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        output.writeEnum(4, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        output.writeMessage(5, getDeviceId());
-      }
-      if (endpointId_ != null) {
-        output.writeMessage(6, getEndpointId());
-      }
-      if (serviceId_ != null) {
-        output.writeMessage(7, getServiceId());
-      }
-      if (sliceId_ != null) {
-        output.writeMessage(8, getSliceId());
-      }
-      if (connectionId_ != null) {
-        output.writeMessage(9, getConnectionId());
-      }
-      if (linkId_ != null) {
-        output.writeMessage(10, getLinkId());
-      }
-      unknownFields.writeTo(output);
-    }
+        private int kpiSampleType_ = 0;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (!getKpiDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
-      }
-      for (int i = 0; i < kpiIdList_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, kpiIdList_.get(i));
-      }
-      if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(4, kpiSampleType_);
-      }
-      if (deviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getDeviceId());
-      }
-      if (endpointId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getEndpointId());
-      }
-      if (serviceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(7, getServiceId());
-      }
-      if (sliceId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, getSliceId());
-      }
-      if (connectionId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(9, getConnectionId());
-      }
-      if (linkId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(10, getLinkId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+         * @return The enum numeric value on the wire for kpiSampleType.
+         */
+        @java.lang.Override
+        public int getKpiSampleTypeValue() {
+            return kpiSampleType_;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiDescriptor)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiDescriptor other = (monitoring.Monitoring.KpiDescriptor) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (!getKpiDescription()
-          .equals(other.getKpiDescription())) return false;
-      if (!getKpiIdListList()
-          .equals(other.getKpiIdListList())) return false;
-      if (kpiSampleType_ != other.kpiSampleType_) return false;
-      if (hasDeviceId() != other.hasDeviceId()) return false;
-      if (hasDeviceId()) {
-        if (!getDeviceId()
-            .equals(other.getDeviceId())) return false;
-      }
-      if (hasEndpointId() != other.hasEndpointId()) return false;
-      if (hasEndpointId()) {
-        if (!getEndpointId()
-            .equals(other.getEndpointId())) return false;
-      }
-      if (hasServiceId() != other.hasServiceId()) return false;
-      if (hasServiceId()) {
-        if (!getServiceId()
-            .equals(other.getServiceId())) return false;
-      }
-      if (hasSliceId() != other.hasSliceId()) return false;
-      if (hasSliceId()) {
-        if (!getSliceId()
-            .equals(other.getSliceId())) return false;
-      }
-      if (hasConnectionId() != other.hasConnectionId()) return false;
-      if (hasConnectionId()) {
-        if (!getConnectionId()
-            .equals(other.getConnectionId())) return false;
-      }
-      if (hasLinkId() != other.hasLinkId()) return false;
-      if (hasLinkId()) {
-        if (!getLinkId()
-            .equals(other.getLinkId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+         * @return The kpiSampleType.
+         */
+        @java.lang.Override
+        public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
+            kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+            return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (37 * hash) + KPI_DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getKpiDescription().hashCode();
-      if (getKpiIdListCount() > 0) {
-        hash = (37 * hash) + KPI_ID_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdListList().hashCode();
-      }
-      hash = (37 * hash) + KPI_SAMPLE_TYPE_FIELD_NUMBER;
-      hash = (53 * hash) + kpiSampleType_;
-      if (hasDeviceId()) {
-        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getDeviceId().hashCode();
-      }
-      if (hasEndpointId()) {
-        hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getEndpointId().hashCode();
-      }
-      if (hasServiceId()) {
-        hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getServiceId().hashCode();
-      }
-      if (hasSliceId()) {
-        hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSliceId().hashCode();
-      }
-      if (hasConnectionId()) {
-        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getConnectionId().hashCode();
-      }
-      if (hasLinkId()) {
-        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getLinkId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static final int DEVICE_ID_FIELD_NUMBER = 5;
 
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        private context.ContextOuterClass.DeviceId deviceId_;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiDescriptor prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         * @return Whether the deviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDeviceId() {
+            return deviceId_ != null;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiDescriptor}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptor)
-        monitoring.Monitoring.KpiDescriptorOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiDescriptor.class, monitoring.Monitoring.KpiDescriptor.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiIdListFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        kpiDescription_ = "";
-
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          kpiIdListBuilder_.clear();
-        }
-        kpiSampleType_ = 0;
-
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiDescriptor.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptor build() {
-        monitoring.Monitoring.KpiDescriptor result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptor buildPartial() {
-        monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        result.kpiDescription_ = kpiDescription_;
-        if (kpiIdListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiIdList_ = kpiIdList_;
-        } else {
-          result.kpiIdList_ = kpiIdListBuilder_.build();
-        }
-        result.kpiSampleType_ = kpiSampleType_;
-        if (deviceIdBuilder_ == null) {
-          result.deviceId_ = deviceId_;
-        } else {
-          result.deviceId_ = deviceIdBuilder_.build();
-        }
-        if (endpointIdBuilder_ == null) {
-          result.endpointId_ = endpointId_;
-        } else {
-          result.endpointId_ = endpointIdBuilder_.build();
-        }
-        if (serviceIdBuilder_ == null) {
-          result.serviceId_ = serviceId_;
-        } else {
-          result.serviceId_ = serviceIdBuilder_.build();
-        }
-        if (sliceIdBuilder_ == null) {
-          result.sliceId_ = sliceId_;
-        } else {
-          result.sliceId_ = sliceIdBuilder_.build();
-        }
-        if (connectionIdBuilder_ == null) {
-          result.connectionId_ = connectionId_;
-        } else {
-          result.connectionId_ = connectionIdBuilder_.build();
-        }
-        if (linkIdBuilder_ == null) {
-          result.linkId_ = linkId_;
-        } else {
-          result.linkId_ = linkIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiDescriptor) {
-          return mergeFrom((monitoring.Monitoring.KpiDescriptor)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiDescriptor other) {
-        if (other == monitoring.Monitoring.KpiDescriptor.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (!other.getKpiDescription().isEmpty()) {
-          kpiDescription_ = other.kpiDescription_;
-          onChanged();
-        }
-        if (kpiIdListBuilder_ == null) {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdList_.isEmpty()) {
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdListIsMutable();
-              kpiIdList_.addAll(other.kpiIdList_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiIdList_.isEmpty()) {
-            if (kpiIdListBuilder_.isEmpty()) {
-              kpiIdListBuilder_.dispose();
-              kpiIdListBuilder_ = null;
-              kpiIdList_ = other.kpiIdList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdListFieldBuilder() : null;
-            } else {
-              kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
-            }
-          }
-        }
-        if (other.kpiSampleType_ != 0) {
-          setKpiSampleTypeValue(other.getKpiSampleTypeValue());
-        }
-        if (other.hasDeviceId()) {
-          mergeDeviceId(other.getDeviceId());
-        }
-        if (other.hasEndpointId()) {
-          mergeEndpointId(other.getEndpointId());
-        }
-        if (other.hasServiceId()) {
-          mergeServiceId(other.getServiceId());
-        }
-        if (other.hasSliceId()) {
-          mergeSliceId(other.getSliceId());
-        }
-        if (other.hasConnectionId()) {
-          mergeConnectionId(other.getConnectionId());
-        }
-        if (other.hasLinkId()) {
-          mergeLinkId(other.getLinkId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private java.lang.Object kpiDescription_ = "";
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return The kpiDescription.
-       */
-      public java.lang.String getKpiDescription() {
-        java.lang.Object ref = kpiDescription_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          kpiDescription_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return The bytes for kpiDescription.
-       */
-      public com.google.protobuf.ByteString
-          getKpiDescriptionBytes() {
-        java.lang.Object ref = kpiDescription_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          kpiDescription_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @param value The kpiDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiDescription(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        kpiDescription_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiDescription() {
-        
-        kpiDescription_ = getDefaultInstance().getKpiDescription();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string kpi_description = 2;</code>
-       * @param value The bytes for kpiDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiDescriptionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        kpiDescription_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdListBuilder_;
-
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
-        if (kpiIdListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
-        } else {
-          return kpiIdListBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public int getKpiIdListCount() {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.size();
-        } else {
-          return kpiIdListBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId getKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);
-        } else {
-          return kpiIdListBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder setKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, value);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addKpiIdList(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder addAllKpiIdList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiIdList_);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder clearKpiIdList() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public Builder removeKpiIdList(int index) {
-        if (kpiIdListBuilder_ == null) {
-          ensureKpiIdListIsMutable();
-          kpiIdList_.remove(index);
-          onChanged();
-        } else {
-          kpiIdListBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(
-          int index) {
-        if (kpiIdListBuilder_ == null) {
-          return kpiIdList_.get(index);  } else {
-          return kpiIdListBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdListOrBuilderList() {
-        if (kpiIdListBuilder_ != null) {
-          return kpiIdListBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpiIdList_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder() {
-        return getKpiIdListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder(
-          int index) {
-        return getKpiIdListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdListBuilderList() {
-        return getKpiIdListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdListFieldBuilder() {
-        if (kpiIdListBuilder_ == null) {
-          kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiIdList_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpiIdList_ = null;
-        }
-        return kpiIdListBuilder_;
-      }
-
-      private int kpiSampleType_ = 0;
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return The enum numeric value on the wire for kpiSampleType.
-       */
-      @java.lang.Override public int getKpiSampleTypeValue() {
-        return kpiSampleType_;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @param value The enum numeric value on the wire for kpiSampleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleTypeValue(int value) {
-        
-        kpiSampleType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return The kpiSampleType.
-       */
-      @java.lang.Override
-      public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
-        @SuppressWarnings("deprecation")
-        kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.valueOf(kpiSampleType_);
-        return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @param value The kpiSampleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        kpiSampleType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearKpiSampleType() {
-        
-        kpiSampleType_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.DeviceId deviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       * @return Whether the deviceId field is set.
-       */
-      public boolean hasDeviceId() {
-        return deviceIdBuilder_ != null || deviceId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       * @return The deviceId.
-       */
-      public context.ContextOuterClass.DeviceId getDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        } else {
-          return deviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          deviceId_ = value;
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder setDeviceId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          deviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
-        if (deviceIdBuilder_ == null) {
-          if (deviceId_ != null) {
-            deviceId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(deviceId_).mergeFrom(value).buildPartial();
-          } else {
-            deviceId_ = value;
-          }
-          onChanged();
-        } else {
-          deviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public Builder clearDeviceId() {
-        if (deviceIdBuilder_ == null) {
-          deviceId_ = null;
-          onChanged();
-        } else {
-          deviceId_ = null;
-          deviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
-        
-        onChanged();
-        return getDeviceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
-        if (deviceIdBuilder_ != null) {
-          return deviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return deviceId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId device_id = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDeviceIdFieldBuilder() {
-        if (deviceIdBuilder_ == null) {
-          deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDeviceId(),
-                  getParentForChildren(),
-                  isClean());
-          deviceId_ = null;
-        }
-        return deviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.EndPointId endpointId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       * @return Whether the endpointId field is set.
-       */
-      public boolean hasEndpointId() {
-        return endpointIdBuilder_ != null || endpointId_ != null;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       * @return The endpointId.
-       */
-      public context.ContextOuterClass.EndPointId getEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        } else {
-          return endpointIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endpointId_ = value;
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder setEndpointId(
-          context.ContextOuterClass.EndPointId.Builder builderForValue) {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = builderForValue.build();
-          onChanged();
-        } else {
-          endpointIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
-        if (endpointIdBuilder_ == null) {
-          if (endpointId_ != null) {
-            endpointId_ =
-              context.ContextOuterClass.EndPointId.newBuilder(endpointId_).mergeFrom(value).buildPartial();
-          } else {
-            endpointId_ = value;
-          }
-          onChanged();
-        } else {
-          endpointIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public Builder clearEndpointId() {
-        if (endpointIdBuilder_ == null) {
-          endpointId_ = null;
-          onChanged();
-        } else {
-          endpointId_ = null;
-          endpointIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
-        
-        onChanged();
-        return getEndpointIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
-        if (endpointIdBuilder_ != null) {
-          return endpointIdBuilder_.getMessageOrBuilder();
-        } else {
-          return endpointId_ == null ?
-              context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
-        }
-      }
-      /**
-       * <code>.context.EndPointId endpoint_id = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> 
-          getEndpointIdFieldBuilder() {
-        if (endpointIdBuilder_ == null) {
-          endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(
-                  getEndpointId(),
-                  getParentForChildren(),
-                  isClean());
-          endpointId_ = null;
-        }
-        return endpointIdBuilder_;
-      }
-
-      private context.ContextOuterClass.ServiceId serviceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       * @return Whether the serviceId field is set.
-       */
-      public boolean hasServiceId() {
-        return serviceIdBuilder_ != null || serviceId_ != null;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       * @return The serviceId.
-       */
-      public context.ContextOuterClass.ServiceId getServiceId() {
-        if (serviceIdBuilder_ == null) {
-          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        } else {
-          return serviceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          serviceId_ = value;
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder setServiceId(
-          context.ContextOuterClass.ServiceId.Builder builderForValue) {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          serviceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
-        if (serviceIdBuilder_ == null) {
-          if (serviceId_ != null) {
-            serviceId_ =
-              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
-          } else {
-            serviceId_ = value;
-          }
-          onChanged();
-        } else {
-          serviceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public Builder clearServiceId() {
-        if (serviceIdBuilder_ == null) {
-          serviceId_ = null;
-          onChanged();
-        } else {
-          serviceId_ = null;
-          serviceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
-        
-        onChanged();
-        return getServiceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
-        if (serviceIdBuilder_ != null) {
-          return serviceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return serviceId_ == null ?
-              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
-        }
-      }
-      /**
-       * <code>.context.ServiceId service_id = 7;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
-          getServiceIdFieldBuilder() {
-        if (serviceIdBuilder_ == null) {
-          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
-                  getServiceId(),
-                  getParentForChildren(),
-                  isClean());
-          serviceId_ = null;
-        }
-        return serviceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.SliceId sliceId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       * @return Whether the sliceId field is set.
-       */
-      public boolean hasSliceId() {
-        return sliceIdBuilder_ != null || sliceId_ != null;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       * @return The sliceId.
-       */
-      public context.ContextOuterClass.SliceId getSliceId() {
-        if (sliceIdBuilder_ == null) {
-          return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        } else {
-          return sliceIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder setSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          sliceId_ = value;
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder setSliceId(
-          context.ContextOuterClass.SliceId.Builder builderForValue) {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = builderForValue.build();
-          onChanged();
-        } else {
-          sliceIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
-        if (sliceIdBuilder_ == null) {
-          if (sliceId_ != null) {
-            sliceId_ =
-              context.ContextOuterClass.SliceId.newBuilder(sliceId_).mergeFrom(value).buildPartial();
-          } else {
-            sliceId_ = value;
-          }
-          onChanged();
-        } else {
-          sliceIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public Builder clearSliceId() {
-        if (sliceIdBuilder_ == null) {
-          sliceId_ = null;
-          onChanged();
-        } else {
-          sliceId_ = null;
-          sliceIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
-        
-        onChanged();
-        return getSliceIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
-        if (sliceIdBuilder_ != null) {
-          return sliceIdBuilder_.getMessageOrBuilder();
-        } else {
-          return sliceId_ == null ?
-              context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
-        }
-      }
-      /**
-       * <code>.context.SliceId slice_id = 8;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> 
-          getSliceIdFieldBuilder() {
-        if (sliceIdBuilder_ == null) {
-          sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(
-                  getSliceId(),
-                  getParentForChildren(),
-                  isClean());
-          sliceId_ = null;
-        }
-        return sliceIdBuilder_;
-      }
-
-      private context.ContextOuterClass.ConnectionId connectionId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       * @return Whether the connectionId field is set.
-       */
-      public boolean hasConnectionId() {
-        return connectionIdBuilder_ != null || connectionId_ != null;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       * @return The connectionId.
-       */
-      public context.ContextOuterClass.ConnectionId getConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        } else {
-          return connectionIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          connectionId_ = value;
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder setConnectionId(
-          context.ContextOuterClass.ConnectionId.Builder builderForValue) {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = builderForValue.build();
-          onChanged();
-        } else {
-          connectionIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
-        if (connectionIdBuilder_ == null) {
-          if (connectionId_ != null) {
-            connectionId_ =
-              context.ContextOuterClass.ConnectionId.newBuilder(connectionId_).mergeFrom(value).buildPartial();
-          } else {
-            connectionId_ = value;
-          }
-          onChanged();
-        } else {
-          connectionIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public Builder clearConnectionId() {
-        if (connectionIdBuilder_ == null) {
-          connectionId_ = null;
-          onChanged();
-        } else {
-          connectionId_ = null;
-          connectionIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
-        
-        onChanged();
-        return getConnectionIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
-        if (connectionIdBuilder_ != null) {
-          return connectionIdBuilder_.getMessageOrBuilder();
-        } else {
-          return connectionId_ == null ?
-              context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
-        }
-      }
-      /**
-       * <code>.context.ConnectionId connection_id = 9;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> 
-          getConnectionIdFieldBuilder() {
-        if (connectionIdBuilder_ == null) {
-          connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(
-                  getConnectionId(),
-                  getParentForChildren(),
-                  isClean());
-          connectionId_ = null;
-        }
-        return connectionIdBuilder_;
-      }
-
-      private context.ContextOuterClass.LinkId linkId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       * @return Whether the linkId field is set.
-       */
-      public boolean hasLinkId() {
-        return linkIdBuilder_ != null || linkId_ != null;
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       * @return The linkId.
-       */
-      public context.ContextOuterClass.LinkId getLinkId() {
-        if (linkIdBuilder_ == null) {
-          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        } else {
-          return linkIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          linkId_ = value;
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public Builder setLinkId(
-          context.ContextOuterClass.LinkId.Builder builderForValue) {
-        if (linkIdBuilder_ == null) {
-          linkId_ = builderForValue.build();
-          onChanged();
-        } else {
-          linkIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
-        if (linkIdBuilder_ == null) {
-          if (linkId_ != null) {
-            linkId_ =
-              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
-          } else {
-            linkId_ = value;
-          }
-          onChanged();
-        } else {
-          linkIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public Builder clearLinkId() {
-        if (linkIdBuilder_ == null) {
-          linkId_ = null;
-          onChanged();
-        } else {
-          linkId_ = null;
-          linkIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
-        
-        onChanged();
-        return getLinkIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
-        if (linkIdBuilder_ != null) {
-          return linkIdBuilder_.getMessageOrBuilder();
-        } else {
-          return linkId_ == null ?
-              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
-        }
-      }
-      /**
-       * <code>.context.LinkId link_id = 10;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
-          getLinkIdFieldBuilder() {
-        if (linkIdBuilder_ == null) {
-          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
-                  getLinkId(),
-                  getParentForChildren(),
-                  isClean());
-          linkId_ = null;
-        }
-        return linkIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptor)
-    }
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         * @return The deviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDeviceId() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptor)
-    private static final monitoring.Monitoring.KpiDescriptor DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptor();
-    }
+        /**
+         * <code>.context.DeviceId device_id = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+        }
 
-    public static monitoring.Monitoring.KpiDescriptor getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final int ENDPOINT_ID_FIELD_NUMBER = 6;
 
-    private static final com.google.protobuf.Parser<KpiDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<KpiDescriptor>() {
-      @java.lang.Override
-      public KpiDescriptor parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiDescriptor(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiDescriptor> parser() {
-      return PARSER;
-    }
+        private context.ContextOuterClass.EndPointId endpointId_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiDescriptor> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         * @return Whether the endpointId field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndpointId() {
+            return endpointId_ != null;
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptor getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         * @return The endpointId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointId getEndpointId() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
 
-  }
+        /**
+         * <code>.context.EndPointId endpoint_id = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+        }
 
-  public interface MonitorKpiRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.MonitorKpiRequest)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int SERVICE_ID_FIELD_NUMBER = 7;
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+        private context.ContextOuterClass.ServiceId serviceId_;
 
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    float getMonitoringWindowS();
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         * @return Whether the serviceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasServiceId() {
+            return serviceId_ != null;
+        }
 
-    /**
-     * <pre>
-     * Pending add field to reflect Available Device Protocols
-     * </pre>
-     *
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
-     */
-    float getSamplingRateS();
-  }
-  /**
-   * Protobuf type {@code monitoring.MonitorKpiRequest}
-   */
-  public static final class MonitorKpiRequest extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.MonitorKpiRequest)
-      MonitorKpiRequestOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use MonitorKpiRequest.newBuilder() to construct.
-    private MonitorKpiRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private MonitorKpiRequest() {
-    }
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         * @return The serviceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceId getServiceId() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new MonitorKpiRequest();
-    }
+        /**
+         * <code>.context.ServiceId service_id = 7;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private MonitorKpiRequest(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 21: {
-
-              monitoringWindowS_ = input.readFloat();
-              break;
-            }
-            case 29: {
-
-              samplingRateS_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-    }
+        public static final int SLICE_ID_FIELD_NUMBER = 8;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
-    }
+        private context.ContextOuterClass.SliceId sliceId_;
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         * @return Whether the sliceId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSliceId() {
+            return sliceId_ != null;
+        }
 
-    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
-    private float monitoringWindowS_;
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    @java.lang.Override
-    public float getMonitoringWindowS() {
-      return monitoringWindowS_;
-    }
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         * @return The sliceId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceId getSliceId() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        /**
+         * <code>.context.SliceId slice_id = 8;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+        }
+
+        public static final int CONNECTION_ID_FIELD_NUMBER = 9;
+
+        private context.ContextOuterClass.ConnectionId connectionId_;
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         * @return Whether the connectionId field is set.
+         */
+        @java.lang.Override
+        public boolean hasConnectionId() {
+            return connectionId_ != null;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         * @return The connectionId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionId getConnectionId() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        /**
+         * <code>.context.ConnectionId connection_id = 9;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+        }
+
+        public static final int LINK_ID_FIELD_NUMBER = 10;
+
+        private context.ContextOuterClass.LinkId linkId_;
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         * @return Whether the linkId field is set.
+         */
+        @java.lang.Override
+        public boolean hasLinkId() {
+            return linkId_ != null;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         * @return The linkId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkId getLinkId() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        /**
+         * <code>.context.LinkId link_id = 10;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+
+        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 (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kpiDescription_);
+            }
+            for (int i = 0; i < kpiIdList_.size(); i++) {
+                output.writeMessage(3, kpiIdList_.get(i));
+            }
+            if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
+                output.writeEnum(4, kpiSampleType_);
+            }
+            if (deviceId_ != null) {
+                output.writeMessage(5, getDeviceId());
+            }
+            if (endpointId_ != null) {
+                output.writeMessage(6, getEndpointId());
+            }
+            if (serviceId_ != null) {
+                output.writeMessage(7, getServiceId());
+            }
+            if (sliceId_ != null) {
+                output.writeMessage(8, getSliceId());
+            }
+            if (connectionId_ != null) {
+                output.writeMessage(9, getConnectionId());
+            }
+            if (linkId_ != null) {
+                output.writeMessage(10, getLinkId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kpiDescription_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kpiDescription_);
+            }
+            for (int i = 0; i < kpiIdList_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, kpiIdList_.get(i));
+            }
+            if (kpiSampleType_ != kpi_sample_types.KpiSampleTypes.KpiSampleType.KPISAMPLETYPE_UNKNOWN.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(4, kpiSampleType_);
+            }
+            if (deviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getDeviceId());
+            }
+            if (endpointId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndpointId());
+            }
+            if (serviceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getServiceId());
+            }
+            if (sliceId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getSliceId());
+            }
+            if (connectionId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getConnectionId());
+            }
+            if (linkId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getLinkId());
+            }
+            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 monitoring.Monitoring.KpiDescriptor)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiDescriptor other = (monitoring.Monitoring.KpiDescriptor) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (!getKpiDescription().equals(other.getKpiDescription()))
+                return false;
+            if (!getKpiIdListList().equals(other.getKpiIdListList()))
+                return false;
+            if (kpiSampleType_ != other.kpiSampleType_)
+                return false;
+            if (hasDeviceId() != other.hasDeviceId())
+                return false;
+            if (hasDeviceId()) {
+                if (!getDeviceId().equals(other.getDeviceId()))
+                    return false;
+            }
+            if (hasEndpointId() != other.hasEndpointId())
+                return false;
+            if (hasEndpointId()) {
+                if (!getEndpointId().equals(other.getEndpointId()))
+                    return false;
+            }
+            if (hasServiceId() != other.hasServiceId())
+                return false;
+            if (hasServiceId()) {
+                if (!getServiceId().equals(other.getServiceId()))
+                    return false;
+            }
+            if (hasSliceId() != other.hasSliceId())
+                return false;
+            if (hasSliceId()) {
+                if (!getSliceId().equals(other.getSliceId()))
+                    return false;
+            }
+            if (hasConnectionId() != other.hasConnectionId())
+                return false;
+            if (hasConnectionId()) {
+                if (!getConnectionId().equals(other.getConnectionId()))
+                    return false;
+            }
+            if (hasLinkId() != other.hasLinkId())
+                return false;
+            if (hasLinkId()) {
+                if (!getLinkId().equals(other.getLinkId()))
+                    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 (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            hash = (37 * hash) + KPI_DESCRIPTION_FIELD_NUMBER;
+            hash = (53 * hash) + getKpiDescription().hashCode();
+            if (getKpiIdListCount() > 0) {
+                hash = (37 * hash) + KPI_ID_LIST_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiIdListList().hashCode();
+            }
+            hash = (37 * hash) + KPI_SAMPLE_TYPE_FIELD_NUMBER;
+            hash = (53 * hash) + kpiSampleType_;
+            if (hasDeviceId()) {
+                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getDeviceId().hashCode();
+            }
+            if (hasEndpointId()) {
+                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getEndpointId().hashCode();
+            }
+            if (hasServiceId()) {
+                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getServiceId().hashCode();
+            }
+            if (hasSliceId()) {
+                hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSliceId().hashCode();
+            }
+            if (hasConnectionId()) {
+                hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getConnectionId().hashCode();
+            }
+            if (hasLinkId()) {
+                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getLinkId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiDescriptor prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiDescriptor}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptor)
+        monitoring.Monitoring.KpiDescriptorOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiDescriptor.class, monitoring.Monitoring.KpiDescriptor.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiDescriptor.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                kpiDescription_ = "";
+                if (kpiIdListBuilder_ == null) {
+                    kpiIdList_ = java.util.Collections.emptyList();
+                } else {
+                    kpiIdList_ = null;
+                    kpiIdListBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiSampleType_ = 0;
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptor_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptor getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiDescriptor.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptor build() {
+                monitoring.Monitoring.KpiDescriptor result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptor buildPartial() {
+                monitoring.Monitoring.KpiDescriptor result = new monitoring.Monitoring.KpiDescriptor(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptor result) {
+                if (kpiIdListBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0)) {
+                        kpiIdList_ = java.util.Collections.unmodifiableList(kpiIdList_);
+                        bitField0_ = (bitField0_ & ~0x00000004);
+                    }
+                    result.kpiIdList_ = kpiIdList_;
+                } else {
+                    result.kpiIdList_ = kpiIdListBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiDescription_ = kpiDescription_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.kpiSampleType_ = kpiSampleType_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000040) != 0)) {
+                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000080) != 0)) {
+                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000100) != 0)) {
+                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000200) != 0)) {
+                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiDescriptor) {
+                    return mergeFrom((monitoring.Monitoring.KpiDescriptor) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiDescriptor other) {
+                if (other == monitoring.Monitoring.KpiDescriptor.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (!other.getKpiDescription().isEmpty()) {
+                    kpiDescription_ = other.kpiDescription_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (kpiIdListBuilder_ == null) {
+                    if (!other.kpiIdList_.isEmpty()) {
+                        if (kpiIdList_.isEmpty()) {
+                            kpiIdList_ = other.kpiIdList_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                        } else {
+                            ensureKpiIdListIsMutable();
+                            kpiIdList_.addAll(other.kpiIdList_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.kpiIdList_.isEmpty()) {
+                        if (kpiIdListBuilder_.isEmpty()) {
+                            kpiIdListBuilder_.dispose();
+                            kpiIdListBuilder_ = null;
+                            kpiIdList_ = other.kpiIdList_;
+                            bitField0_ = (bitField0_ & ~0x00000004);
+                            kpiIdListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdListFieldBuilder() : null;
+                        } else {
+                            kpiIdListBuilder_.addAllMessages(other.kpiIdList_);
+                        }
+                    }
+                }
+                if (other.kpiSampleType_ != 0) {
+                    setKpiSampleTypeValue(other.getKpiSampleTypeValue());
+                }
+                if (other.hasDeviceId()) {
+                    mergeDeviceId(other.getDeviceId());
+                }
+                if (other.hasEndpointId()) {
+                    mergeEndpointId(other.getEndpointId());
+                }
+                if (other.hasServiceId()) {
+                    mergeServiceId(other.getServiceId());
+                }
+                if (other.hasSliceId()) {
+                    mergeSliceId(other.getSliceId());
+                }
+                if (other.hasConnectionId()) {
+                    mergeConnectionId(other.getConnectionId());
+                }
+                if (other.hasLinkId()) {
+                    mergeLinkId(other.getLinkId());
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    kpiDescription_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                    if (kpiIdListBuilder_ == null) {
+                                        ensureKpiIdListIsMutable();
+                                        kpiIdList_.add(m);
+                                    } else {
+                                        kpiIdListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 26
+                            case 32:
+                                {
+                                    kpiSampleType_ = input.readEnum();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 42:
+                                {
+                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            case 58:
+                                {
+                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000040;
+                                    break;
+                                }
+                            // case 58
+                            case 66:
+                                {
+                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000080;
+                                    break;
+                                }
+                            // case 66
+                            case 74:
+                                {
+                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000100;
+                                    break;
+                                }
+                            // case 74
+                            case 82:
+                                {
+                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000200;
+                                    break;
+                                }
+                            // case 82
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private java.lang.Object kpiDescription_ = "";
+
+            /**
+             * <code>string kpi_description = 2;</code>
+             * @return The kpiDescription.
+             */
+            public java.lang.String getKpiDescription() {
+                java.lang.Object ref = kpiDescription_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    kpiDescription_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string kpi_description = 2;</code>
+             * @return The bytes for kpiDescription.
+             */
+            public com.google.protobuf.ByteString getKpiDescriptionBytes() {
+                java.lang.Object ref = kpiDescription_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    kpiDescription_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string kpi_description = 2;</code>
+             * @param value The kpiDescription to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiDescription(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                kpiDescription_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string kpi_description = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearKpiDescription() {
+                kpiDescription_ = getDefaultInstance().getKpiDescription();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string kpi_description = 2;</code>
+             * @param value The bytes for kpiDescription to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiDescriptionBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                kpiDescription_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            private java.util.List<monitoring.Monitoring.KpiId> kpiIdList_ = java.util.Collections.emptyList();
+
+            private void ensureKpiIdListIsMutable() {
+                if (!((bitField0_ & 0x00000004) != 0)) {
+                    kpiIdList_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIdList_);
+                    bitField0_ |= 0x00000004;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdListBuilder_;
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiId> getKpiIdListList() {
+                if (kpiIdListBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(kpiIdList_);
+                } else {
+                    return kpiIdListBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public int getKpiIdListCount() {
+                if (kpiIdListBuilder_ == null) {
+                    return kpiIdList_.size();
+                } else {
+                    return kpiIdListBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiId getKpiIdList(int index) {
+                if (kpiIdListBuilder_ == null) {
+                    return kpiIdList_.get(index);
+                } else {
+                    return kpiIdListBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder setKpiIdList(int index, monitoring.Monitoring.KpiId value) {
+                if (kpiIdListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.set(index, value);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder setKpiIdList(int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdListBuilder_ == null) {
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder addKpiIdList(monitoring.Monitoring.KpiId value) {
+                if (kpiIdListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.add(value);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder addKpiIdList(int index, monitoring.Monitoring.KpiId value) {
+                if (kpiIdListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.add(index, value);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder addKpiIdList(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdListBuilder_ == null) {
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder addKpiIdList(int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdListBuilder_ == null) {
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder addAllKpiIdList(java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
+                if (kpiIdListBuilder_ == null) {
+                    ensureKpiIdListIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, kpiIdList_);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder clearKpiIdList() {
+                if (kpiIdListBuilder_ == null) {
+                    kpiIdList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000004);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public Builder removeKpiIdList(int index) {
+                if (kpiIdListBuilder_ == null) {
+                    ensureKpiIdListIsMutable();
+                    kpiIdList_.remove(index);
+                    onChanged();
+                } else {
+                    kpiIdListBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdListBuilder(int index) {
+                return getKpiIdListFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdListOrBuilder(int index) {
+                if (kpiIdListBuilder_ == null) {
+                    return kpiIdList_.get(index);
+                } else {
+                    return kpiIdListBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListOrBuilderList() {
+                if (kpiIdListBuilder_ != null) {
+                    return kpiIdListBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(kpiIdList_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder() {
+                return getKpiIdListFieldBuilder().addBuilder(monitoring.Monitoring.KpiId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder addKpiIdListBuilder(int index) {
+                return getKpiIdListFieldBuilder().addBuilder(index, monitoring.Monitoring.KpiId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_id_list = 3;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiId.Builder> getKpiIdListBuilderList() {
+                return getKpiIdListFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdListFieldBuilder() {
+                if (kpiIdListBuilder_ == null) {
+                    kpiIdListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIdList_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
+                    kpiIdList_ = null;
+                }
+                return kpiIdListBuilder_;
+            }
+
+            private int kpiSampleType_ = 0;
+
+            /**
+             * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+             * @return The enum numeric value on the wire for kpiSampleType.
+             */
+            @java.lang.Override
+            public int getKpiSampleTypeValue() {
+                return kpiSampleType_;
+            }
+
+            /**
+             * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+             * @param value The enum numeric value on the wire for kpiSampleType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiSampleTypeValue(int value) {
+                kpiSampleType_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+             * @return The kpiSampleType.
+             */
+            @java.lang.Override
+            public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleType() {
+                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(kpiSampleType_);
+                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+             * @param value The kpiSampleType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setKpiSampleType(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000008;
+                kpiSampleType_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.kpi_sample_types.KpiSampleType kpi_sample_type = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearKpiSampleType() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                kpiSampleType_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.DeviceId deviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             * @return Whether the deviceId field is set.
+             */
+            public boolean hasDeviceId() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             * @return The deviceId.
+             */
+            public context.ContextOuterClass.DeviceId getDeviceId() {
+                if (deviceIdBuilder_ == null) {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                } else {
+                    return deviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    deviceId_ = value;
+                } else {
+                    deviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (deviceIdBuilder_ == null) {
+                    deviceId_ = builderForValue.build();
+                } else {
+                    deviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
+                if (deviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDeviceIdBuilder().mergeFrom(value);
+                    } else {
+                        deviceId_ = value;
+                    }
+                } else {
+                    deviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public Builder clearDeviceId() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                deviceId_ = null;
+                if (deviceIdBuilder_ != null) {
+                    deviceIdBuilder_.dispose();
+                    deviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getDeviceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
+                if (deviceIdBuilder_ != null) {
+                    return deviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId device_id = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
+                if (deviceIdBuilder_ == null) {
+                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
+                    deviceId_ = null;
+                }
+                return deviceIdBuilder_;
+            }
+
+            private context.ContextOuterClass.EndPointId endpointId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             * @return Whether the endpointId field is set.
+             */
+            public boolean hasEndpointId() {
+                return ((bitField0_ & 0x00000020) != 0);
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             * @return The endpointId.
+             */
+            public context.ContextOuterClass.EndPointId getEndpointId() {
+                if (endpointIdBuilder_ == null) {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                } else {
+                    return endpointIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endpointId_ = value;
+                } else {
+                    endpointIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
+                if (endpointIdBuilder_ == null) {
+                    endpointId_ = builderForValue.build();
+                } else {
+                    endpointIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
+                if (endpointIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
+                        getEndpointIdBuilder().mergeFrom(value);
+                    } else {
+                        endpointId_ = value;
+                    }
+                } else {
+                    endpointIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public Builder clearEndpointId() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                endpointId_ = null;
+                if (endpointIdBuilder_ != null) {
+                    endpointIdBuilder_.dispose();
+                    endpointIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return getEndpointIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
+                if (endpointIdBuilder_ != null) {
+                    return endpointIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
+                }
+            }
+
+            /**
+             * <code>.context.EndPointId endpoint_id = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
+                if (endpointIdBuilder_ == null) {
+                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
+                    endpointId_ = null;
+                }
+                return endpointIdBuilder_;
+            }
+
+            private context.ContextOuterClass.ServiceId serviceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             * @return Whether the serviceId field is set.
+             */
+            public boolean hasServiceId() {
+                return ((bitField0_ & 0x00000040) != 0);
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             * @return The serviceId.
+             */
+            public context.ContextOuterClass.ServiceId getServiceId() {
+                if (serviceIdBuilder_ == null) {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                } else {
+                    return serviceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    serviceId_ = value;
+                } else {
+                    serviceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
+                if (serviceIdBuilder_ == null) {
+                    serviceId_ = builderForValue.build();
+                } else {
+                    serviceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+                if (serviceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000040) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
+                        getServiceIdBuilder().mergeFrom(value);
+                    } else {
+                        serviceId_ = value;
+                    }
+                } else {
+                    serviceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public Builder clearServiceId() {
+                bitField0_ = (bitField0_ & ~0x00000040);
+                serviceId_ = null;
+                if (serviceIdBuilder_ != null) {
+                    serviceIdBuilder_.dispose();
+                    serviceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+                bitField0_ |= 0x00000040;
+                onChanged();
+                return getServiceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+                if (serviceIdBuilder_ != null) {
+                    return serviceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+                }
+            }
+
+            /**
+             * <code>.context.ServiceId service_id = 7;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
+                if (serviceIdBuilder_ == null) {
+                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
+                    serviceId_ = null;
+                }
+                return serviceIdBuilder_;
+            }
+
+            private context.ContextOuterClass.SliceId sliceId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             * @return Whether the sliceId field is set.
+             */
+            public boolean hasSliceId() {
+                return ((bitField0_ & 0x00000080) != 0);
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             * @return The sliceId.
+             */
+            public context.ContextOuterClass.SliceId getSliceId() {
+                if (sliceIdBuilder_ == null) {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                } else {
+                    return sliceIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    sliceId_ = value;
+                } else {
+                    sliceIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
+                if (sliceIdBuilder_ == null) {
+                    sliceId_ = builderForValue.build();
+                } else {
+                    sliceIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
+                if (sliceIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000080) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
+                        getSliceIdBuilder().mergeFrom(value);
+                    } else {
+                        sliceId_ = value;
+                    }
+                } else {
+                    sliceIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public Builder clearSliceId() {
+                bitField0_ = (bitField0_ & ~0x00000080);
+                sliceId_ = null;
+                if (sliceIdBuilder_ != null) {
+                    sliceIdBuilder_.dispose();
+                    sliceIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
+                bitField0_ |= 0x00000080;
+                onChanged();
+                return getSliceIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
+                if (sliceIdBuilder_ != null) {
+                    return sliceIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
+                }
+            }
+
+            /**
+             * <code>.context.SliceId slice_id = 8;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdFieldBuilder() {
+                if (sliceIdBuilder_ == null) {
+                    sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(getSliceId(), getParentForChildren(), isClean());
+                    sliceId_ = null;
+                }
+                return sliceIdBuilder_;
+            }
+
+            private context.ContextOuterClass.ConnectionId connectionId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             * @return Whether the connectionId field is set.
+             */
+            public boolean hasConnectionId() {
+                return ((bitField0_ & 0x00000100) != 0);
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             * @return The connectionId.
+             */
+            public context.ContextOuterClass.ConnectionId getConnectionId() {
+                if (connectionIdBuilder_ == null) {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                } else {
+                    return connectionIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    connectionId_ = value;
+                } else {
+                    connectionIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
+                if (connectionIdBuilder_ == null) {
+                    connectionId_ = builderForValue.build();
+                } else {
+                    connectionIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
+                if (connectionIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000100) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
+                        getConnectionIdBuilder().mergeFrom(value);
+                    } else {
+                        connectionId_ = value;
+                    }
+                } else {
+                    connectionIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public Builder clearConnectionId() {
+                bitField0_ = (bitField0_ & ~0x00000100);
+                connectionId_ = null;
+                if (connectionIdBuilder_ != null) {
+                    connectionIdBuilder_.dispose();
+                    connectionIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
+                bitField0_ |= 0x00000100;
+                onChanged();
+                return getConnectionIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
+                if (connectionIdBuilder_ != null) {
+                    return connectionIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
+                }
+            }
+
+            /**
+             * <code>.context.ConnectionId connection_id = 9;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdFieldBuilder() {
+                if (connectionIdBuilder_ == null) {
+                    connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(getConnectionId(), getParentForChildren(), isClean());
+                    connectionId_ = null;
+                }
+                return connectionIdBuilder_;
+            }
+
+            private context.ContextOuterClass.LinkId linkId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             * @return Whether the linkId field is set.
+             */
+            public boolean hasLinkId() {
+                return ((bitField0_ & 0x00000200) != 0);
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             * @return The linkId.
+             */
+            public context.ContextOuterClass.LinkId getLinkId() {
+                if (linkIdBuilder_ == null) {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                } else {
+                    return linkIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    linkId_ = value;
+                } else {
+                    linkIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
+                if (linkIdBuilder_ == null) {
+                    linkId_ = builderForValue.build();
+                } else {
+                    linkIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+                if (linkIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000200) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
+                        getLinkIdBuilder().mergeFrom(value);
+                    } else {
+                        linkId_ = value;
+                    }
+                } else {
+                    linkIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public Builder clearLinkId() {
+                bitField0_ = (bitField0_ & ~0x00000200);
+                linkId_ = null;
+                if (linkIdBuilder_ != null) {
+                    linkIdBuilder_.dispose();
+                    linkIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+                bitField0_ |= 0x00000200;
+                onChanged();
+                return getLinkIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+                if (linkIdBuilder_ != null) {
+                    return linkIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+                }
+            }
+
+            /**
+             * <code>.context.LinkId link_id = 10;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
+                if (linkIdBuilder_ == null) {
+                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
+                    linkId_ = null;
+                }
+                return linkIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptor)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptor)
+        private static final monitoring.Monitoring.KpiDescriptor DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptor();
+        }
+
+        public static monitoring.Monitoring.KpiDescriptor getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiDescriptor> PARSER = new com.google.protobuf.AbstractParser<KpiDescriptor>() {
+
+            @java.lang.Override
+            public KpiDescriptor 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<KpiDescriptor> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiDescriptor> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptor getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface MonitorKpiRequestOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.MonitorKpiRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>float monitoring_window_s = 2;</code>
+         * @return The monitoringWindowS.
+         */
+        float getMonitoringWindowS();
+
+        /**
+         * <pre>
+         * Pending add field to reflect Available Device Protocols
+         * </pre>
+         *
+         * <code>float sampling_rate_s = 3;</code>
+         * @return The samplingRateS.
+         */
+        float getSamplingRateS();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.MonitorKpiRequest}
+     */
+    public static final class MonitorKpiRequest extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.MonitorKpiRequest)
+    MonitorKpiRequestOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use MonitorKpiRequest.newBuilder() to construct.
+        private MonitorKpiRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private MonitorKpiRequest() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new MonitorKpiRequest();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.KpiId kpiId_;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
+
+        private float monitoringWindowS_ = 0F;
+
+        /**
+         * <code>float monitoring_window_s = 2;</code>
+         * @return The monitoringWindowS.
+         */
+        @java.lang.Override
+        public float getMonitoringWindowS() {
+            return monitoringWindowS_;
+        }
+
+        public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
+
+        private float samplingRateS_ = 0F;
+
+        /**
+         * <pre>
+         * Pending add field to reflect Available Device Protocols
+         * </pre>
+         *
+         * <code>float sampling_rate_s = 3;</code>
+         * @return The samplingRateS.
+         */
+        @java.lang.Override
+        public float getSamplingRateS() {
+            return samplingRateS_;
+        }
+
+        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 (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+                output.writeFloat(2, monitoringWindowS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+                output.writeFloat(3, samplingRateS_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingRateS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingRateS_);
+            }
+            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 monitoring.Monitoring.MonitorKpiRequest)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.MonitorKpiRequest other = (monitoring.Monitoring.MonitorKpiRequest) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (java.lang.Float.floatToIntBits(getMonitoringWindowS()) != java.lang.Float.floatToIntBits(other.getMonitoringWindowS()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getSamplingRateS()) != java.lang.Float.floatToIntBits(other.getSamplingRateS()))
+                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 (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
+            hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingRateS());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.MonitorKpiRequest prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.MonitorKpiRequest}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.MonitorKpiRequest)
+        monitoring.Monitoring.MonitorKpiRequestOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                monitoringWindowS_ = 0F;
+                samplingRateS_ = 0F;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
+                return monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.MonitorKpiRequest build() {
+                monitoring.Monitoring.MonitorKpiRequest result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
+                monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.MonitorKpiRequest result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingRateS_ = samplingRateS_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.MonitorKpiRequest) {
+                    return mergeFrom((monitoring.Monitoring.MonitorKpiRequest) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.MonitorKpiRequest other) {
+                if (other == monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (other.getMonitoringWindowS() != 0F) {
+                    setMonitoringWindowS(other.getMonitoringWindowS());
+                }
+                if (other.getSamplingRateS() != 0F) {
+                    setSamplingRateS(other.getSamplingRateS());
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    samplingRateS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private float monitoringWindowS_;
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @return The monitoringWindowS.
+             */
+            @java.lang.Override
+            public float getMonitoringWindowS() {
+                return monitoringWindowS_;
+            }
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @param value The monitoringWindowS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setMonitoringWindowS(float value) {
+                monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                monitoringWindowS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private float samplingRateS_;
+
+            /**
+             * <pre>
+             * Pending add field to reflect Available Device Protocols
+             * </pre>
+             *
+             * <code>float sampling_rate_s = 3;</code>
+             * @return The samplingRateS.
+             */
+            @java.lang.Override
+            public float getSamplingRateS() {
+                return samplingRateS_;
+            }
+
+            /**
+             * <pre>
+             * Pending add field to reflect Available Device Protocols
+             * </pre>
+             *
+             * <code>float sampling_rate_s = 3;</code>
+             * @param value The samplingRateS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSamplingRateS(float value) {
+                samplingRateS_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * Pending add field to reflect Available Device Protocols
+             * </pre>
+             *
+             * <code>float sampling_rate_s = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSamplingRateS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                samplingRateS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.MonitorKpiRequest)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.MonitorKpiRequest)
+        private static final monitoring.Monitoring.MonitorKpiRequest DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.MonitorKpiRequest();
+        }
+
+        public static monitoring.Monitoring.MonitorKpiRequest getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<MonitorKpiRequest> PARSER = new com.google.protobuf.AbstractParser<MonitorKpiRequest>() {
+
+            @java.lang.Override
+            public MonitorKpiRequest 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<MonitorKpiRequest> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<MonitorKpiRequest> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiQueryOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiQuery)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        monitoring.Monitoring.KpiId getKpiIds(int index);
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        int getKpiIdsCount();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdsOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(int index);
+
+        /**
+         * <code>float monitoring_window_s = 2;</code>
+         * @return The monitoringWindowS.
+         */
+        float getMonitoringWindowS();
+
+        /**
+         * <pre>
+         * used when you want something like "get the last N many samples
+         * </pre>
+         *
+         * <code>uint32 last_n_samples = 3;</code>
+         * @return The lastNSamples.
+         */
+        int getLastNSamples();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         * @return Whether the startTimestamp field is set.
+         */
+        boolean hasStartTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         * @return The startTimestamp.
+         */
+        context.ContextOuterClass.Timestamp getStartTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         * @return Whether the endTimestamp field is set.
+         */
+        boolean hasEndTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         * @return The endTimestamp.
+         */
+        context.ContextOuterClass.Timestamp getEndTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiQuery}
+     */
+    public static final class KpiQuery extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiQuery)
+    KpiQueryOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiQuery.newBuilder() to construct.
+        private KpiQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiQuery() {
+            kpiIds_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiQuery();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
+        }
+
+        public static final int KPI_IDS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.KpiId> kpiIds_;
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
+            return kpiIds_;
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdsOrBuilderList() {
+            return kpiIds_;
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        @java.lang.Override
+        public int getKpiIdsCount() {
+            return kpiIds_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiIds(int index) {
+            return kpiIds_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(int index) {
+            return kpiIds_.get(index);
+        }
+
+        public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
+
+        private float monitoringWindowS_ = 0F;
+
+        /**
+         * <code>float monitoring_window_s = 2;</code>
+         * @return The monitoringWindowS.
+         */
+        @java.lang.Override
+        public float getMonitoringWindowS() {
+            return monitoringWindowS_;
+        }
+
+        public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
+
+        private int lastNSamples_ = 0;
+
+        /**
+         * <pre>
+         * used when you want something like "get the last N many samples
+         * </pre>
+         *
+         * <code>uint32 last_n_samples = 3;</code>
+         * @return The lastNSamples.
+         */
+        @java.lang.Override
+        public int getLastNSamples() {
+            return lastNSamples_;
+        }
+
+        public static final int START_TIMESTAMP_FIELD_NUMBER = 4;
+
+        private context.ContextOuterClass.Timestamp startTimestamp_;
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         * @return Whether the startTimestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasStartTimestamp() {
+            return startTimestamp_ != null;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         * @return The startTimestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getStartTimestamp() {
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 4;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        }
+
+        public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
+
+        private context.ContextOuterClass.Timestamp endTimestamp_;
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         * @return Whether the endTimestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndTimestamp() {
+            return endTimestamp_ != null;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         * @return The endTimestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getEndTimestamp() {
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < kpiIds_.size(); i++) {
+                output.writeMessage(1, kpiIds_.get(i));
+            }
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+                output.writeFloat(2, monitoringWindowS_);
+            }
+            if (lastNSamples_ != 0) {
+                output.writeUInt32(3, lastNSamples_);
+            }
+            if (startTimestamp_ != null) {
+                output.writeMessage(4, getStartTimestamp());
+            }
+            if (endTimestamp_ != null) {
+                output.writeMessage(5, getEndTimestamp());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < kpiIds_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiIds_.get(i));
+            }
+            if (java.lang.Float.floatToRawIntBits(monitoringWindowS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, monitoringWindowS_);
+            }
+            if (lastNSamples_ != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, lastNSamples_);
+            }
+            if (startTimestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getStartTimestamp());
+            }
+            if (endTimestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndTimestamp());
+            }
+            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 monitoring.Monitoring.KpiQuery)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj;
+            if (!getKpiIdsList().equals(other.getKpiIdsList()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getMonitoringWindowS()) != java.lang.Float.floatToIntBits(other.getMonitoringWindowS()))
+                return false;
+            if (getLastNSamples() != other.getLastNSamples())
+                return false;
+            if (hasStartTimestamp() != other.hasStartTimestamp())
+                return false;
+            if (hasStartTimestamp()) {
+                if (!getStartTimestamp().equals(other.getStartTimestamp()))
+                    return false;
+            }
+            if (hasEndTimestamp() != other.hasEndTimestamp())
+                return false;
+            if (hasEndTimestamp()) {
+                if (!getEndTimestamp().equals(other.getEndTimestamp()))
+                    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 (getKpiIdsCount() > 0) {
+                hash = (37 * hash) + KPI_IDS_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiIdsList().hashCode();
+            }
+            hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getMonitoringWindowS());
+            hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER;
+            hash = (53 * hash) + getLastNSamples();
+            if (hasStartTimestamp()) {
+                hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getStartTimestamp().hashCode();
+            }
+            if (hasEndTimestamp()) {
+                hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getEndTimestamp().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiQuery parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiQuery prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiQuery}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiQuery)
+        monitoring.Monitoring.KpiQueryOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (kpiIdsBuilder_ == null) {
+                    kpiIds_ = java.util.Collections.emptyList();
+                } else {
+                    kpiIds_ = null;
+                    kpiIdsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                monitoringWindowS_ = 0F;
+                lastNSamples_ = 0;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
+                    startTimestampBuilder_ = null;
+                }
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
+                    endTimestampBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiQuery.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiQuery build() {
+                monitoring.Monitoring.KpiQuery result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiQuery buildPartial() {
+                monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiQuery result) {
+                if (kpiIdsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.kpiIds_ = kpiIds_;
+                } else {
+                    result.kpiIds_ = kpiIdsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiQuery result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.monitoringWindowS_ = monitoringWindowS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.lastNSamples_ = lastNSamples_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiQuery) {
+                    return mergeFrom((monitoring.Monitoring.KpiQuery) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) {
+                if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance())
+                    return this;
+                if (kpiIdsBuilder_ == null) {
+                    if (!other.kpiIds_.isEmpty()) {
+                        if (kpiIds_.isEmpty()) {
+                            kpiIds_ = other.kpiIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureKpiIdsIsMutable();
+                            kpiIds_.addAll(other.kpiIds_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.kpiIds_.isEmpty()) {
+                        if (kpiIdsBuilder_.isEmpty()) {
+                            kpiIdsBuilder_.dispose();
+                            kpiIdsBuilder_ = null;
+                            kpiIds_ = other.kpiIds_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            kpiIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiIdsFieldBuilder() : null;
+                        } else {
+                            kpiIdsBuilder_.addAllMessages(other.kpiIds_);
+                        }
+                    }
+                }
+                if (other.getMonitoringWindowS() != 0F) {
+                    setMonitoringWindowS(other.getMonitoringWindowS());
+                }
+                if (other.getLastNSamples() != 0) {
+                    setLastNSamples(other.getLastNSamples());
+                }
+                if (other.hasStartTimestamp()) {
+                    mergeStartTimestamp(other.getStartTimestamp());
+                }
+                if (other.hasEndTimestamp()) {
+                    mergeEndTimestamp(other.getEndTimestamp());
+                }
+                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:
+                                {
+                                    monitoring.Monitoring.KpiId m = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
+                                    if (kpiIdsBuilder_ == null) {
+                                        ensureKpiIdsIsMutable();
+                                        kpiIds_.add(m);
+                                    } else {
+                                        kpiIdsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    monitoringWindowS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 24:
+                                {
+                                    lastNSamples_ = input.readUInt32();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 34:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<monitoring.Monitoring.KpiId> kpiIds_ = java.util.Collections.emptyList();
+
+            private void ensureKpiIdsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIds_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdsBuilder_;
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
+                if (kpiIdsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(kpiIds_);
+                } else {
+                    return kpiIdsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public int getKpiIdsCount() {
+                if (kpiIdsBuilder_ == null) {
+                    return kpiIds_.size();
+                } else {
+                    return kpiIdsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId getKpiIds(int index) {
+                if (kpiIdsBuilder_ == null) {
+                    return kpiIds_.get(index);
+                } else {
+                    return kpiIdsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder setKpiIds(int index, monitoring.Monitoring.KpiId value) {
+                if (kpiIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.set(index, value);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder setKpiIds(int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdsBuilder_ == null) {
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder addKpiIds(monitoring.Monitoring.KpiId value) {
+                if (kpiIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.add(value);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder addKpiIds(int index, monitoring.Monitoring.KpiId value) {
+                if (kpiIdsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.add(index, value);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder addKpiIds(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdsBuilder_ == null) {
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder addKpiIds(int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdsBuilder_ == null) {
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder addAllKpiIds(java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
+                if (kpiIdsBuilder_ == null) {
+                    ensureKpiIdsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, kpiIds_);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder clearKpiIds() {
+                if (kpiIdsBuilder_ == null) {
+                    kpiIds_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public Builder removeKpiIds(int index) {
+                if (kpiIdsBuilder_ == null) {
+                    ensureKpiIdsIsMutable();
+                    kpiIds_.remove(index);
+                    onChanged();
+                } else {
+                    kpiIdsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdsBuilder(int index) {
+                return getKpiIdsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(int index) {
+                if (kpiIdsBuilder_ == null) {
+                    return kpiIds_.get(index);
+                } else {
+                    return kpiIdsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> getKpiIdsOrBuilderList() {
+                if (kpiIdsBuilder_ != null) {
+                    return kpiIdsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(kpiIds_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder() {
+                return getKpiIdsFieldBuilder().addBuilder(monitoring.Monitoring.KpiId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder(int index) {
+                return getKpiIdsFieldBuilder().addBuilder(index, monitoring.Monitoring.KpiId.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiId.Builder> getKpiIdsBuilderList() {
+                return getKpiIdsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdsFieldBuilder() {
+                if (kpiIdsBuilder_ == null) {
+                    kpiIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(kpiIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    kpiIds_ = null;
+                }
+                return kpiIdsBuilder_;
+            }
+
+            private float monitoringWindowS_;
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @return The monitoringWindowS.
+             */
+            @java.lang.Override
+            public float getMonitoringWindowS() {
+                return monitoringWindowS_;
+            }
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @param value The monitoringWindowS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setMonitoringWindowS(float value) {
+                monitoringWindowS_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float monitoring_window_s = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearMonitoringWindowS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                monitoringWindowS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private int lastNSamples_;
+
+            /**
+             * <pre>
+             * used when you want something like "get the last N many samples
+             * </pre>
+             *
+             * <code>uint32 last_n_samples = 3;</code>
+             * @return The lastNSamples.
+             */
+            @java.lang.Override
+            public int getLastNSamples() {
+                return lastNSamples_;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the last N many samples
+             * </pre>
+             *
+             * <code>uint32 last_n_samples = 3;</code>
+             * @param value The lastNSamples to set.
+             * @return This builder for chaining.
+             */
+            public Builder setLastNSamples(int value) {
+                lastNSamples_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the last N many samples
+             * </pre>
+             *
+             * <code>uint32 last_n_samples = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearLastNSamples() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                lastNSamples_ = 0;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.Timestamp startTimestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             * @return Whether the startTimestamp field is set.
+             */
+            public boolean hasStartTimestamp() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             * @return The startTimestamp.
+             */
+            public context.ContextOuterClass.Timestamp getStartTimestamp() {
+                if (startTimestampBuilder_ == null) {
+                    return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+                } else {
+                    return startTimestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (startTimestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    startTimestamp_ = value;
+                } else {
+                    startTimestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = builderForValue.build();
+                } else {
+                    startTimestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (startTimestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
+                    } else {
+                        startTimestamp_ = value;
+                    }
+                } else {
+                    startTimestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public Builder clearStartTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
+                    startTimestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getStartTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+                if (startTimestampBuilder_ != null) {
+                    return startTimestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getStartTimestampFieldBuilder() {
+                if (startTimestampBuilder_ == null) {
+                    startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getStartTimestamp(), getParentForChildren(), isClean());
+                    startTimestamp_ = null;
+                }
+                return startTimestampBuilder_;
+            }
+
+            private context.ContextOuterClass.Timestamp endTimestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             * @return Whether the endTimestamp field is set.
+             */
+            public boolean hasEndTimestamp() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             * @return The endTimestamp.
+             */
+            public context.ContextOuterClass.Timestamp getEndTimestamp() {
+                if (endTimestampBuilder_ == null) {
+                    return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+                } else {
+                    return endTimestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (endTimestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endTimestamp_ = value;
+                } else {
+                    endTimestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = builderForValue.build();
+                } else {
+                    endTimestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (endTimestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
+                    } else {
+                        endTimestamp_ = value;
+                    }
+                } else {
+                    endTimestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public Builder clearEndTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
+                    endTimestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getEndTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+                if (endTimestampBuilder_ != null) {
+                    return endTimestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getEndTimestampFieldBuilder() {
+                if (endTimestampBuilder_ == null) {
+                    endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getEndTimestamp(), getParentForChildren(), isClean());
+                    endTimestamp_ = null;
+                }
+                return endTimestampBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiQuery)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
+        private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
+        }
+
+        public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiQuery> PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
+
+            @java.lang.Override
+            public KpiQuery 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<KpiQuery> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiQuery> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface RawKpiOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.RawKpi)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         * @return Whether the kpiValue field is set.
+         */
+        boolean hasKpiValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         * @return The kpiValue.
+         */
+        monitoring.Monitoring.KpiValue getKpiValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         */
+        monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
+    }
+
+    /**
+     * <pre>
+     * cell
+     * </pre>
+     *
+     * Protobuf type {@code monitoring.RawKpi}
+     */
+    public static final class RawKpi extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.RawKpi)
+    RawKpiOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use RawKpi.newBuilder() to construct.
+        private RawKpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private RawKpi() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new RawKpi();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class);
+        }
+
+        public static final int TIMESTAMP_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Timestamp timestamp_;
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        public static final int KPI_VALUE_FIELD_NUMBER = 2;
+
+        private monitoring.Monitoring.KpiValue kpiValue_;
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         * @return Whether the kpiValue field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiValue() {
+            return kpiValue_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         * @return The kpiValue.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValue getKpiValue() {
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        }
+
+        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 (timestamp_ != null) {
+                output.writeMessage(1, getTimestamp());
+            }
+            if (kpiValue_ != null) {
+                output.writeMessage(2, getKpiValue());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTimestamp());
+            }
+            if (kpiValue_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiValue());
+            }
+            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 monitoring.Monitoring.RawKpi)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.RawKpi other = (monitoring.Monitoring.RawKpi) obj;
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    return false;
+            }
+            if (hasKpiValue() != other.hasKpiValue())
+                return false;
+            if (hasKpiValue()) {
+                if (!getKpiValue().equals(other.getKpiValue()))
+                    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 (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            if (hasKpiValue()) {
+                hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiValue().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpi parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.RawKpi prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * cell
+         * </pre>
+         *
+         * Protobuf type {@code monitoring.RawKpi}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.RawKpi)
+        monitoring.Monitoring.RawKpiOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.RawKpi.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
+                    kpiValueBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
+                return monitoring.Monitoring.RawKpi.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpi build() {
+                monitoring.Monitoring.RawKpi result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpi buildPartial() {
+                monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.RawKpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.RawKpi) {
+                    return mergeFrom((monitoring.Monitoring.RawKpi) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
+                if (other == monitoring.Monitoring.RawKpi.getDefaultInstance())
+                    return this;
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                if (other.hasKpiValue()) {
+                    mergeKpiValue(other.getKpiValue());
+                }
+                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(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Timestamp timestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiValue kpiValue_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             * @return Whether the kpiValue field is set.
+             */
+            public boolean hasKpiValue() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             * @return The kpiValue.
+             */
+            public monitoring.Monitoring.KpiValue getKpiValue() {
+                if (kpiValueBuilder_ == null) {
+                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+                } else {
+                    return kpiValueBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiValueBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiValue_ = value;
+                } else {
+                    kpiValueBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = builderForValue.build();
+                } else {
+                    kpiValueBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiValueBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
+                    } else {
+                        kpiValue_ = value;
+                    }
+                } else {
+                    kpiValueBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public Builder clearKpiValue() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
+                    kpiValueBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getKpiValueFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+                if (kpiValueBuilder_ != null) {
+                    return kpiValueBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> getKpiValueFieldBuilder() {
+                if (kpiValueBuilder_ == null) {
+                    kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(getKpiValue(), getParentForChildren(), isClean());
+                    kpiValue_ = null;
+                }
+                return kpiValueBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.RawKpi)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.RawKpi)
+        private static final monitoring.Monitoring.RawKpi DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpi();
+        }
+
+        public static monitoring.Monitoring.RawKpi getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<RawKpi> PARSER = new com.google.protobuf.AbstractParser<RawKpi>() {
+
+            @java.lang.Override
+            public RawKpi 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<RawKpi> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<RawKpi> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface RawKpiListOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.RawKpiList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList();
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        monitoring.Monitoring.RawKpi getRawKpis(int index);
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        int getRawKpisCount();
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> getRawKpisOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(int index);
+    }
+
+    /**
+     * <pre>
+     * column
+     * </pre>
+     *
+     * Protobuf type {@code monitoring.RawKpiList}
+     */
+    public static final class RawKpiList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.RawKpiList)
+    RawKpiListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use RawKpiList.newBuilder() to construct.
+        private RawKpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private RawKpiList() {
+            rawKpis_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new RawKpiList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.KpiId kpiId_;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        public static final int RAW_KPIS_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_;
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
+            return rawKpis_;
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> getRawKpisOrBuilderList() {
+            return rawKpis_;
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        @java.lang.Override
+        public int getRawKpisCount() {
+            return rawKpis_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpi getRawKpis(int index) {
+            return rawKpis_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(int index) {
+            return rawKpis_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            for (int i = 0; i < rawKpis_.size(); i++) {
+                output.writeMessage(2, rawKpis_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            for (int i = 0; i < rawKpis_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, rawKpis_.get(i));
+            }
+            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 monitoring.Monitoring.RawKpiList)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.RawKpiList other = (monitoring.Monitoring.RawKpiList) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (!getRawKpisList().equals(other.getRawKpisList()))
+                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 (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            if (getRawKpisCount() > 0) {
+                hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
+                hash = (53 * hash) + getRawKpisList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.RawKpiList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * column
+         * </pre>
+         *
+         * Protobuf type {@code monitoring.RawKpiList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.RawKpiList)
+        monitoring.Monitoring.RawKpiListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                if (rawKpisBuilder_ == null) {
+                    rawKpis_ = java.util.Collections.emptyList();
+                } else {
+                    rawKpis_ = null;
+                    rawKpisBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000002);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
+                return monitoring.Monitoring.RawKpiList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiList build() {
+                monitoring.Monitoring.RawKpiList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiList buildPartial() {
+                monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiList result) {
+                if (rawKpisBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0)) {
+                        rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
+                        bitField0_ = (bitField0_ & ~0x00000002);
+                    }
+                    result.rawKpis_ = rawKpis_;
+                } else {
+                    result.rawKpis_ = rawKpisBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.RawKpiList result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.RawKpiList) {
+                    return mergeFrom((monitoring.Monitoring.RawKpiList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.RawKpiList other) {
+                if (other == monitoring.Monitoring.RawKpiList.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (rawKpisBuilder_ == null) {
+                    if (!other.rawKpis_.isEmpty()) {
+                        if (rawKpis_.isEmpty()) {
+                            rawKpis_ = other.rawKpis_;
+                            bitField0_ = (bitField0_ & ~0x00000002);
+                        } else {
+                            ensureRawKpisIsMutable();
+                            rawKpis_.addAll(other.rawKpis_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.rawKpis_.isEmpty()) {
+                        if (rawKpisBuilder_.isEmpty()) {
+                            rawKpisBuilder_.dispose();
+                            rawKpisBuilder_ = null;
+                            rawKpis_ = other.rawKpis_;
+                            bitField0_ = (bitField0_ & ~0x00000002);
+                            rawKpisBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpisFieldBuilder() : null;
+                        } else {
+                            rawKpisBuilder_.addAllMessages(other.rawKpis_);
+                        }
+                    }
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    monitoring.Monitoring.RawKpi m = input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry);
+                                    if (rawKpisBuilder_ == null) {
+                                        ensureRawKpisIsMutable();
+                                        rawKpis_.add(m);
+                                    } else {
+                                        rawKpisBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_ = java.util.Collections.emptyList();
+
+            private void ensureRawKpisIsMutable() {
+                if (!((bitField0_ & 0x00000002) != 0)) {
+                    rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>(rawKpis_);
+                    bitField0_ |= 0x00000002;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> rawKpisBuilder_;
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
+                if (rawKpisBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(rawKpis_);
+                } else {
+                    return rawKpisBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public int getRawKpisCount() {
+                if (rawKpisBuilder_ == null) {
+                    return rawKpis_.size();
+                } else {
+                    return rawKpisBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public monitoring.Monitoring.RawKpi getRawKpis(int index) {
+                if (rawKpisBuilder_ == null) {
+                    return rawKpis_.get(index);
+                } else {
+                    return rawKpisBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder setRawKpis(int index, monitoring.Monitoring.RawKpi value) {
+                if (rawKpisBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpisIsMutable();
+                    rawKpis_.set(index, value);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder setRawKpis(int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
+                if (rawKpisBuilder_ == null) {
+                    ensureRawKpisIsMutable();
+                    rawKpis_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder addRawKpis(monitoring.Monitoring.RawKpi value) {
+                if (rawKpisBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpisIsMutable();
+                    rawKpis_.add(value);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder addRawKpis(int index, monitoring.Monitoring.RawKpi value) {
+                if (rawKpisBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpisIsMutable();
+                    rawKpis_.add(index, value);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder addRawKpis(monitoring.Monitoring.RawKpi.Builder builderForValue) {
+                if (rawKpisBuilder_ == null) {
+                    ensureRawKpisIsMutable();
+                    rawKpis_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder addRawKpis(int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
+                if (rawKpisBuilder_ == null) {
+                    ensureRawKpisIsMutable();
+                    rawKpis_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder addAllRawKpis(java.lang.Iterable<? extends monitoring.Monitoring.RawKpi> values) {
+                if (rawKpisBuilder_ == null) {
+                    ensureRawKpisIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, rawKpis_);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder clearRawKpis() {
+                if (rawKpisBuilder_ == null) {
+                    rawKpis_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000002);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public Builder removeRawKpis(int index) {
+                if (rawKpisBuilder_ == null) {
+                    ensureRawKpisIsMutable();
+                    rawKpis_.remove(index);
+                    onChanged();
+                } else {
+                    rawKpisBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public monitoring.Monitoring.RawKpi.Builder getRawKpisBuilder(int index) {
+                return getRawKpisFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(int index) {
+                if (rawKpisBuilder_ == null) {
+                    return rawKpis_.get(index);
+                } else {
+                    return rawKpisBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> getRawKpisOrBuilderList() {
+                if (rawKpisBuilder_ != null) {
+                    return rawKpisBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(rawKpis_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder() {
+                return getRawKpisFieldBuilder().addBuilder(monitoring.Monitoring.RawKpi.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder(int index) {
+                return getRawKpisFieldBuilder().addBuilder(index, monitoring.Monitoring.RawKpi.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
+             */
+            public java.util.List<monitoring.Monitoring.RawKpi.Builder> getRawKpisBuilderList() {
+                return getRawKpisFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> getRawKpisFieldBuilder() {
+                if (rawKpisBuilder_ == null) {
+                    rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(rawKpis_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
+                    rawKpis_ = null;
+                }
+                return rawKpisBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.RawKpiList)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.RawKpiList)
+        private static final monitoring.Monitoring.RawKpiList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiList();
+        }
+
+        public static monitoring.Monitoring.RawKpiList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<RawKpiList> PARSER = new com.google.protobuf.AbstractParser<RawKpiList>() {
+
+            @java.lang.Override
+            public RawKpiList 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<RawKpiList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<RawKpiList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface RawKpiTableOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.RawKpiTable)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList();
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        monitoring.Monitoring.RawKpiList getRawKpiLists(int index);
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        int getRawKpiListsCount();
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> getRawKpiListsOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(int index);
+    }
+
+    /**
+     * <pre>
+     * table
+     * </pre>
+     *
+     * Protobuf type {@code monitoring.RawKpiTable}
+     */
+    public static final class RawKpiTable extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.RawKpiTable)
+    RawKpiTableOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use RawKpiTable.newBuilder() to construct.
+        private RawKpiTable(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private RawKpiTable() {
+            rawKpiLists_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new RawKpiTable();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
+        }
+
+        public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_;
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
+            return rawKpiLists_;
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> getRawKpiListsOrBuilderList() {
+            return rawKpiLists_;
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        @java.lang.Override
+        public int getRawKpiListsCount() {
+            return rawKpiLists_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
+            return rawKpiLists_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(int index) {
+            return rawKpiLists_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < rawKpiLists_.size(); i++) {
+                output.writeMessage(1, rawKpiLists_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < rawKpiLists_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, rawKpiLists_.get(i));
+            }
+            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 monitoring.Monitoring.RawKpiTable)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
+            if (!getRawKpiListsList().equals(other.getRawKpiListsList()))
+                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 (getRawKpiListsCount() > 0) {
+                hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
+                hash = (53 * hash) + getRawKpiListsList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.RawKpiTable parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.RawKpiTable prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * <pre>
+         * table
+         * </pre>
+         *
+         * Protobuf type {@code monitoring.RawKpiTable}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.RawKpiTable)
+        monitoring.Monitoring.RawKpiTableOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (rawKpiListsBuilder_ == null) {
+                    rawKpiLists_ = java.util.Collections.emptyList();
+                } else {
+                    rawKpiLists_ = null;
+                    rawKpiListsBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
+                return monitoring.Monitoring.RawKpiTable.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiTable build() {
+                monitoring.Monitoring.RawKpiTable result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.RawKpiTable buildPartial() {
+                monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.RawKpiTable result) {
+                if (rawKpiListsBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.rawKpiLists_ = rawKpiLists_;
+                } else {
+                    result.rawKpiLists_ = rawKpiListsBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.RawKpiTable result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.RawKpiTable) {
+                    return mergeFrom((monitoring.Monitoring.RawKpiTable) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.RawKpiTable other) {
+                if (other == monitoring.Monitoring.RawKpiTable.getDefaultInstance())
+                    return this;
+                if (rawKpiListsBuilder_ == null) {
+                    if (!other.rawKpiLists_.isEmpty()) {
+                        if (rawKpiLists_.isEmpty()) {
+                            rawKpiLists_ = other.rawKpiLists_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureRawKpiListsIsMutable();
+                            rawKpiLists_.addAll(other.rawKpiLists_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.rawKpiLists_.isEmpty()) {
+                        if (rawKpiListsBuilder_.isEmpty()) {
+                            rawKpiListsBuilder_.dispose();
+                            rawKpiListsBuilder_ = null;
+                            rawKpiLists_ = other.rawKpiLists_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            rawKpiListsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getRawKpiListsFieldBuilder() : null;
+                        } else {
+                            rawKpiListsBuilder_.addAllMessages(other.rawKpiLists_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    monitoring.Monitoring.RawKpiList m = input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry);
+                                    if (rawKpiListsBuilder_ == null) {
+                                        ensureRawKpiListsIsMutable();
+                                        rawKpiLists_.add(m);
+                                    } else {
+                                        rawKpiListsBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_ = java.util.Collections.emptyList();
+
+            private void ensureRawKpiListsIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>(rawKpiLists_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> rawKpiListsBuilder_;
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
+                if (rawKpiListsBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(rawKpiLists_);
+                } else {
+                    return rawKpiListsBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public int getRawKpiListsCount() {
+                if (rawKpiListsBuilder_ == null) {
+                    return rawKpiLists_.size();
+                } else {
+                    return rawKpiListsBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
+                if (rawKpiListsBuilder_ == null) {
+                    return rawKpiLists_.get(index);
+                } else {
+                    return rawKpiListsBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder setRawKpiLists(int index, monitoring.Monitoring.RawKpiList value) {
+                if (rawKpiListsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.set(index, value);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder setRawKpiLists(int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
+                if (rawKpiListsBuilder_ == null) {
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder addRawKpiLists(monitoring.Monitoring.RawKpiList value) {
+                if (rawKpiListsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.add(value);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder addRawKpiLists(int index, monitoring.Monitoring.RawKpiList value) {
+                if (rawKpiListsBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.add(index, value);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder addRawKpiLists(monitoring.Monitoring.RawKpiList.Builder builderForValue) {
+                if (rawKpiListsBuilder_ == null) {
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder addRawKpiLists(int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
+                if (rawKpiListsBuilder_ == null) {
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder addAllRawKpiLists(java.lang.Iterable<? extends monitoring.Monitoring.RawKpiList> values) {
+                if (rawKpiListsBuilder_ == null) {
+                    ensureRawKpiListsIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, rawKpiLists_);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder clearRawKpiLists() {
+                if (rawKpiListsBuilder_ == null) {
+                    rawKpiLists_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public Builder removeRawKpiLists(int index) {
+                if (rawKpiListsBuilder_ == null) {
+                    ensureRawKpiListsIsMutable();
+                    rawKpiLists_.remove(index);
+                    onChanged();
+                } else {
+                    rawKpiListsBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public monitoring.Monitoring.RawKpiList.Builder getRawKpiListsBuilder(int index) {
+                return getRawKpiListsFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(int index) {
+                if (rawKpiListsBuilder_ == null) {
+                    return rawKpiLists_.get(index);
+                } else {
+                    return rawKpiListsBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> getRawKpiListsOrBuilderList() {
+                if (rawKpiListsBuilder_ != null) {
+                    return rawKpiListsBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(rawKpiLists_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder() {
+                return getRawKpiListsFieldBuilder().addBuilder(monitoring.Monitoring.RawKpiList.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder(int index) {
+                return getRawKpiListsFieldBuilder().addBuilder(index, monitoring.Monitoring.RawKpiList.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.RawKpiList.Builder> getRawKpiListsBuilderList() {
+                return getRawKpiListsFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> getRawKpiListsFieldBuilder() {
+                if (rawKpiListsBuilder_ == null) {
+                    rawKpiListsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder>(rawKpiLists_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    rawKpiLists_ = null;
+                }
+                return rawKpiListsBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.RawKpiTable)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.RawKpiTable)
+        private static final monitoring.Monitoring.RawKpiTable DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiTable();
+        }
+
+        public static monitoring.Monitoring.RawKpiTable getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<RawKpiTable> PARSER = new com.google.protobuf.AbstractParser<RawKpiTable>() {
+
+            @java.lang.Override
+            public RawKpiTable 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<RawKpiTable> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<RawKpiTable> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiIdOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiId)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        context.ContextOuterClass.Uuid getKpiId();
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiId}
+     */
+    public static final class KpiId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiId)
+    KpiIdOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiId.newBuilder() to construct.
+        private KpiId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiId() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiId();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid kpiId_;
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getKpiId() {
+            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.context.Uuid kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+        }
+
+        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 (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            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 monitoring.Monitoring.KpiId)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiId other = (monitoring.Monitoring.KpiId) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    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 (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiId)
+        monitoring.Monitoring.KpiIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiId build() {
+                monitoring.Monitoring.KpiId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiId buildPartial() {
+                monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiId) {
+                    return mergeFrom((monitoring.Monitoring.KpiId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
+                if (other == monitoring.Monitoring.KpiId.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public context.ContextOuterClass.Uuid getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public Builder setKpiId(context.ContextOuterClass.Uuid value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public Builder setKpiId(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiId)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiId)
+        private static final monitoring.Monitoring.KpiId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiId();
+        }
+
+        public static monitoring.Monitoring.KpiId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiId> PARSER = new com.google.protobuf.AbstractParser<KpiId>() {
+
+            @java.lang.Override
+            public KpiId 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<KpiId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.Kpi)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         * @return Whether the kpiValue field is set.
+         */
+        boolean hasKpiValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         * @return The kpiValue.
+         */
+        monitoring.Monitoring.KpiValue getKpiValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         */
+        monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.Kpi}
+     */
+    public static final class Kpi extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.Kpi)
+    KpiOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use Kpi.newBuilder() to construct.
+        private Kpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private Kpi() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new Kpi();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.KpiId kpiId_;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        public static final int TIMESTAMP_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.Timestamp timestamp_;
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        public static final int KPI_VALUE_FIELD_NUMBER = 3;
+
+        private monitoring.Monitoring.KpiValue kpiValue_;
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         * @return Whether the kpiValue field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiValue() {
+            return kpiValue_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         * @return The kpiValue.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValue getKpiValue() {
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpi_value = 3;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+            return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+        }
+
+        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 (kpiId_ != null) {
+                output.writeMessage(1, getKpiId());
+            }
+            if (timestamp_ != null) {
+                output.writeMessage(2, getTimestamp());
+            }
+            if (kpiValue_ != null) {
+                output.writeMessage(3, getKpiValue());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiId());
+            }
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTimestamp());
+            }
+            if (kpiValue_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiValue());
+            }
+            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 monitoring.Monitoring.Kpi)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.Kpi other = (monitoring.Monitoring.Kpi) obj;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    return false;
+            }
+            if (hasKpiValue() != other.hasKpiValue())
+                return false;
+            if (hasKpiValue()) {
+                if (!getKpiValue().equals(other.getKpiValue()))
+                    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 (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            if (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            if (hasKpiValue()) {
+                hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiValue().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.Kpi parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.Kpi parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.Kpi parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.Kpi prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.Kpi}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.Kpi)
+        monitoring.Monitoring.KpiOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.Kpi.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
+                    kpiValueBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
+                return monitoring.Monitoring.Kpi.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.Kpi build() {
+                monitoring.Monitoring.Kpi result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.Kpi buildPartial() {
+                monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.Kpi result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiValue_ = kpiValueBuilder_ == null ? kpiValue_ : kpiValueBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.Kpi) {
+                    return mergeFrom((monitoring.Monitoring.Kpi) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.Kpi other) {
+                if (other == monitoring.Monitoring.Kpi.getDefaultInstance())
+                    return this;
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                if (other.hasKpiValue()) {
+                    mergeKpiValue(other.getKpiValue());
+                }
+                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(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private context.ContextOuterClass.Timestamp timestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
+
+            /**
+             * <code>.context.Timestamp timestamp = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiValue kpiValue_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             * @return Whether the kpiValue field is set.
+             */
+            public boolean hasKpiValue() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             * @return The kpiValue.
+             */
+            public monitoring.Monitoring.KpiValue getKpiValue() {
+                if (kpiValueBuilder_ == null) {
+                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+                } else {
+                    return kpiValueBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiValueBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiValue_ = value;
+                } else {
+                    kpiValueBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public Builder setKpiValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
+                if (kpiValueBuilder_ == null) {
+                    kpiValue_ = builderForValue.build();
+                } else {
+                    kpiValueBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiValueBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && kpiValue_ != null && kpiValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiValueBuilder().mergeFrom(value);
+                    } else {
+                        kpiValue_ = value;
+                    }
+                } else {
+                    kpiValueBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public Builder clearKpiValue() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiValue_ = null;
+                if (kpiValueBuilder_ != null) {
+                    kpiValueBuilder_.dispose();
+                    kpiValueBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getKpiValueFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
+                if (kpiValueBuilder_ != null) {
+                    return kpiValueBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpi_value = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> getKpiValueFieldBuilder() {
+                if (kpiValueBuilder_ == null) {
+                    kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(getKpiValue(), getParentForChildren(), isClean());
+                    kpiValue_ = null;
+                }
+                return kpiValueBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.Kpi)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.Kpi)
+        private static final monitoring.Monitoring.Kpi DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.Kpi();
+        }
+
+        public static monitoring.Monitoring.Kpi getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<Kpi> PARSER = new com.google.protobuf.AbstractParser<Kpi>() {
+
+            @java.lang.Override
+            public Kpi 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<Kpi> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<Kpi> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiValueRangeOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiValueRange)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         * @return Whether the kpiMinValue field is set.
+         */
+        boolean hasKpiMinValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         * @return The kpiMinValue.
+         */
+        monitoring.Monitoring.KpiValue getKpiMinValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         */
+        monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         * @return Whether the kpiMaxValue field is set.
+         */
+        boolean hasKpiMaxValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         * @return The kpiMaxValue.
+         */
+        monitoring.Monitoring.KpiValue getKpiMaxValue();
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         */
+        monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder();
+
+        /**
+         * <pre>
+         * by default True
+         * </pre>
+         *
+         * <code>bool inRange = 3;</code>
+         * @return The inRange.
+         */
+        boolean getInRange();
+
+        /**
+         * <pre>
+         * False is outside the interval
+         * </pre>
+         *
+         * <code>bool includeMinValue = 4;</code>
+         * @return The includeMinValue.
+         */
+        boolean getIncludeMinValue();
+
+        /**
+         * <pre>
+         * False is outside the interval
+         * </pre>
+         *
+         * <code>bool includeMaxValue = 5;</code>
+         * @return The includeMaxValue.
+         */
+        boolean getIncludeMaxValue();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiValueRange}
+     */
+    public static final class KpiValueRange extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiValueRange)
+    KpiValueRangeOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiValueRange.newBuilder() to construct.
+        private KpiValueRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiValueRange() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiValueRange();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
+        }
+
+        public static final int KPIMINVALUE_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.KpiValue kpiMinValue_;
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         * @return Whether the kpiMinValue field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiMinValue() {
+            return kpiMinValue_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         * @return The kpiMinValue.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValue getKpiMinValue() {
+            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
+            return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+        }
+
+        public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
+
+        private monitoring.Monitoring.KpiValue kpiMaxValue_;
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         * @return Whether the kpiMaxValue field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiMaxValue() {
+            return kpiMaxValue_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         * @return The kpiMaxValue.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValue getKpiMaxValue() {
+            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+        }
+
+        /**
+         * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
+            return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+        }
+
+        public static final int INRANGE_FIELD_NUMBER = 3;
+
+        private boolean inRange_ = false;
+
+        /**
+         * <pre>
+         * by default True
+         * </pre>
+         *
+         * <code>bool inRange = 3;</code>
+         * @return The inRange.
+         */
+        @java.lang.Override
+        public boolean getInRange() {
+            return inRange_;
+        }
+
+        public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
+
+        private boolean includeMinValue_ = false;
+
+        /**
+         * <pre>
+         * False is outside the interval
+         * </pre>
+         *
+         * <code>bool includeMinValue = 4;</code>
+         * @return The includeMinValue.
+         */
+        @java.lang.Override
+        public boolean getIncludeMinValue() {
+            return includeMinValue_;
+        }
+
+        public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
+
+        private boolean includeMaxValue_ = false;
+
+        /**
+         * <pre>
+         * False is outside the interval
+         * </pre>
+         *
+         * <code>bool includeMaxValue = 5;</code>
+         * @return The includeMaxValue.
+         */
+        @java.lang.Override
+        public boolean getIncludeMaxValue() {
+            return includeMaxValue_;
+        }
+
+        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 (kpiMinValue_ != null) {
+                output.writeMessage(1, getKpiMinValue());
+            }
+            if (kpiMaxValue_ != null) {
+                output.writeMessage(2, getKpiMaxValue());
+            }
+            if (inRange_ != false) {
+                output.writeBool(3, inRange_);
+            }
+            if (includeMinValue_ != false) {
+                output.writeBool(4, includeMinValue_);
+            }
+            if (includeMaxValue_ != false) {
+                output.writeBool(5, includeMaxValue_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (kpiMinValue_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getKpiMinValue());
+            }
+            if (kpiMaxValue_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiMaxValue());
+            }
+            if (inRange_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, inRange_);
+            }
+            if (includeMinValue_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeMinValue_);
+            }
+            if (includeMaxValue_ != false) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeMaxValue_);
+            }
+            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 monitoring.Monitoring.KpiValueRange)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiValueRange other = (monitoring.Monitoring.KpiValueRange) obj;
+            if (hasKpiMinValue() != other.hasKpiMinValue())
+                return false;
+            if (hasKpiMinValue()) {
+                if (!getKpiMinValue().equals(other.getKpiMinValue()))
+                    return false;
+            }
+            if (hasKpiMaxValue() != other.hasKpiMaxValue())
+                return false;
+            if (hasKpiMaxValue()) {
+                if (!getKpiMaxValue().equals(other.getKpiMaxValue()))
+                    return false;
+            }
+            if (getInRange() != other.getInRange())
+                return false;
+            if (getIncludeMinValue() != other.getIncludeMinValue())
+                return false;
+            if (getIncludeMaxValue() != other.getIncludeMaxValue())
+                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 (hasKpiMinValue()) {
+                hash = (37 * hash) + KPIMINVALUE_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiMinValue().hashCode();
+            }
+            if (hasKpiMaxValue()) {
+                hash = (37 * hash) + KPIMAXVALUE_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiMaxValue().hashCode();
+            }
+            hash = (37 * hash) + INRANGE_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getInRange());
+            hash = (37 * hash) + INCLUDEMINVALUE_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMinValue());
+            hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
+            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeMaxValue());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValueRange parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiValueRange prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiValueRange}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiValueRange)
+        monitoring.Monitoring.KpiValueRangeOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
+                    kpiMinValueBuilder_ = null;
+                }
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
+                    kpiMaxValueBuilder_ = null;
+                }
+                inRange_ = false;
+                includeMinValue_ = false;
+                includeMaxValue_ = false;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiValueRange.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValueRange build() {
+                monitoring.Monitoring.KpiValueRange result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValueRange buildPartial() {
+                monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiValueRange result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.kpiMinValue_ = kpiMinValueBuilder_ == null ? kpiMinValue_ : kpiMinValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiMaxValue_ = kpiMaxValueBuilder_ == null ? kpiMaxValue_ : kpiMaxValueBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.inRange_ = inRange_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.includeMinValue_ = includeMinValue_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.includeMaxValue_ = includeMaxValue_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiValueRange) {
+                    return mergeFrom((monitoring.Monitoring.KpiValueRange) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiValueRange other) {
+                if (other == monitoring.Monitoring.KpiValueRange.getDefaultInstance())
+                    return this;
+                if (other.hasKpiMinValue()) {
+                    mergeKpiMinValue(other.getKpiMinValue());
+                }
+                if (other.hasKpiMaxValue()) {
+                    mergeKpiMaxValue(other.getKpiMaxValue());
+                }
+                if (other.getInRange() != false) {
+                    setInRange(other.getInRange());
+                }
+                if (other.getIncludeMinValue() != false) {
+                    setIncludeMinValue(other.getIncludeMinValue());
+                }
+                if (other.getIncludeMaxValue() != false) {
+                    setIncludeMaxValue(other.getIncludeMaxValue());
+                }
+                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(getKpiMinValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiMaxValueFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 24:
+                                {
+                                    inRange_ = input.readBool();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    includeMinValue_ = input.readBool();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 32
+                            case 40:
+                                {
+                                    includeMaxValue_ = input.readBool();
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 40
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.KpiValue kpiMinValue_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             * @return Whether the kpiMinValue field is set.
+             */
+            public boolean hasKpiMinValue() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             * @return The kpiMinValue.
+             */
+            public monitoring.Monitoring.KpiValue getKpiMinValue() {
+                if (kpiMinValueBuilder_ == null) {
+                    return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+                } else {
+                    return kpiMinValueBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public Builder setKpiMinValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiMinValueBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiMinValue_ = value;
+                } else {
+                    kpiMinValueBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public Builder setKpiMinValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValue_ = builderForValue.build();
+                } else {
+                    kpiMinValueBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiMinValueBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && kpiMinValue_ != null && kpiMinValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMinValueBuilder().mergeFrom(value);
+                    } else {
+                        kpiMinValue_ = value;
+                    }
+                } else {
+                    kpiMinValueBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public Builder clearKpiMinValue() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                kpiMinValue_ = null;
+                if (kpiMinValueBuilder_ != null) {
+                    kpiMinValueBuilder_.dispose();
+                    kpiMinValueBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getKpiMinValueFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
+                if (kpiMinValueBuilder_ != null) {
+                    return kpiMinValueBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> getKpiMinValueFieldBuilder() {
+                if (kpiMinValueBuilder_ == null) {
+                    kpiMinValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(getKpiMinValue(), getParentForChildren(), isClean());
+                    kpiMinValue_ = null;
+                }
+                return kpiMinValueBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiValue kpiMaxValue_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMaxValueBuilder_;
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             * @return Whether the kpiMaxValue field is set.
+             */
+            public boolean hasKpiMaxValue() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             * @return The kpiMaxValue.
+             */
+            public monitoring.Monitoring.KpiValue getKpiMaxValue() {
+                if (kpiMaxValueBuilder_ == null) {
+                    return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+                } else {
+                    return kpiMaxValueBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiMaxValueBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiMaxValue_ = value;
+                } else {
+                    kpiMaxValueBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue.Builder builderForValue) {
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValue_ = builderForValue.build();
+                } else {
+                    kpiMaxValueBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
+                if (kpiMaxValueBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && kpiMaxValue_ != null && kpiMaxValue_ != monitoring.Monitoring.KpiValue.getDefaultInstance()) {
+                        getKpiMaxValueBuilder().mergeFrom(value);
+                    } else {
+                        kpiMaxValue_ = value;
+                    }
+                } else {
+                    kpiMaxValueBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public Builder clearKpiMaxValue() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiMaxValue_ = null;
+                if (kpiMaxValueBuilder_ != null) {
+                    kpiMaxValueBuilder_.dispose();
+                    kpiMaxValueBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getKpiMaxValueFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
+                if (kpiMaxValueBuilder_ != null) {
+                    return kpiMaxValueBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> getKpiMaxValueFieldBuilder() {
+                if (kpiMaxValueBuilder_ == null) {
+                    kpiMaxValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(getKpiMaxValue(), getParentForChildren(), isClean());
+                    kpiMaxValue_ = null;
+                }
+                return kpiMaxValueBuilder_;
+            }
+
+            private boolean inRange_;
+
+            /**
+             * <pre>
+             * by default True
+             * </pre>
+             *
+             * <code>bool inRange = 3;</code>
+             * @return The inRange.
+             */
+            @java.lang.Override
+            public boolean getInRange() {
+                return inRange_;
+            }
+
+            /**
+             * <pre>
+             * by default True
+             * </pre>
+             *
+             * <code>bool inRange = 3;</code>
+             * @param value The inRange to set.
+             * @return This builder for chaining.
+             */
+            public Builder setInRange(boolean value) {
+                inRange_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * by default True
+             * </pre>
+             *
+             * <code>bool inRange = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearInRange() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                inRange_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeMinValue_;
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMinValue = 4;</code>
+             * @return The includeMinValue.
+             */
+            @java.lang.Override
+            public boolean getIncludeMinValue() {
+                return includeMinValue_;
+            }
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMinValue = 4;</code>
+             * @param value The includeMinValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeMinValue(boolean value) {
+                includeMinValue_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMinValue = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeMinValue() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                includeMinValue_ = false;
+                onChanged();
+                return this;
+            }
+
+            private boolean includeMaxValue_;
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMaxValue = 5;</code>
+             * @return The includeMaxValue.
+             */
+            @java.lang.Override
+            public boolean getIncludeMaxValue() {
+                return includeMaxValue_;
+            }
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMaxValue = 5;</code>
+             * @param value The includeMaxValue to set.
+             * @return This builder for chaining.
+             */
+            public Builder setIncludeMaxValue(boolean value) {
+                includeMaxValue_ = value;
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * False is outside the interval
+             * </pre>
+             *
+             * <code>bool includeMaxValue = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearIncludeMaxValue() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                includeMaxValue_ = false;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiValueRange)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiValueRange)
+        private static final monitoring.Monitoring.KpiValueRange DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValueRange();
+        }
+
+        public static monitoring.Monitoring.KpiValueRange getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiValueRange> PARSER = new com.google.protobuf.AbstractParser<KpiValueRange>() {
+
+            @java.lang.Override
+            public KpiValueRange 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<KpiValueRange> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiValueRange> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiValueOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiValue)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>int32 int32Val = 1;</code>
+         * @return Whether the int32Val field is set.
+         */
+        boolean hasInt32Val();
+
+        /**
+         * <code>int32 int32Val = 1;</code>
+         * @return The int32Val.
+         */
+        int getInt32Val();
+
+        /**
+         * <code>uint32 uint32Val = 2;</code>
+         * @return Whether the uint32Val field is set.
+         */
+        boolean hasUint32Val();
+
+        /**
+         * <code>uint32 uint32Val = 2;</code>
+         * @return The uint32Val.
+         */
+        int getUint32Val();
+
+        /**
+         * <code>int64 int64Val = 3;</code>
+         * @return Whether the int64Val field is set.
+         */
+        boolean hasInt64Val();
+
+        /**
+         * <code>int64 int64Val = 3;</code>
+         * @return The int64Val.
+         */
+        long getInt64Val();
+
+        /**
+         * <code>uint64 uint64Val = 4;</code>
+         * @return Whether the uint64Val field is set.
+         */
+        boolean hasUint64Val();
+
+        /**
+         * <code>uint64 uint64Val = 4;</code>
+         * @return The uint64Val.
+         */
+        long getUint64Val();
+
+        /**
+         * <code>float floatVal = 5;</code>
+         * @return Whether the floatVal field is set.
+         */
+        boolean hasFloatVal();
+
+        /**
+         * <code>float floatVal = 5;</code>
+         * @return The floatVal.
+         */
+        float getFloatVal();
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return Whether the stringVal field is set.
+         */
+        boolean hasStringVal();
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return The stringVal.
+         */
+        java.lang.String getStringVal();
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return The bytes for stringVal.
+         */
+        com.google.protobuf.ByteString getStringValBytes();
+
+        /**
+         * <code>bool boolVal = 7;</code>
+         * @return Whether the boolVal field is set.
+         */
+        boolean hasBoolVal();
+
+        /**
+         * <code>bool boolVal = 7;</code>
+         * @return The boolVal.
+         */
+        boolean getBoolVal();
+
+        monitoring.Monitoring.KpiValue.ValueCase getValueCase();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiValue}
+     */
+    public static final class KpiValue extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiValue)
+    KpiValueOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiValue.newBuilder() to construct.
+        private KpiValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiValue() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiValue();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
+        }
+
+        private int valueCase_ = 0;
+
+        @SuppressWarnings("serial")
+        private java.lang.Object value_;
+
+        public enum ValueCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+
+            INT32VAL(1),
+            UINT32VAL(2),
+            INT64VAL(3),
+            UINT64VAL(4),
+            FLOATVAL(5),
+            STRINGVAL(6),
+            BOOLVAL(7),
+            VALUE_NOT_SET(0);
+
+            private final int value;
+
+            private ValueCase(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 ValueCase valueOf(int value) {
+                return forNumber(value);
+            }
+
+            public static ValueCase forNumber(int value) {
+                switch(value) {
+                    case 1:
+                        return INT32VAL;
+                    case 2:
+                        return UINT32VAL;
+                    case 3:
+                        return INT64VAL;
+                    case 4:
+                        return UINT64VAL;
+                    case 5:
+                        return FLOATVAL;
+                    case 6:
+                        return STRINGVAL;
+                    case 7:
+                        return BOOLVAL;
+                    case 0:
+                        return VALUE_NOT_SET;
+                    default:
+                        return null;
+                }
+            }
+
+            public int getNumber() {
+                return this.value;
+            }
+        }
+
+        public ValueCase getValueCase() {
+            return ValueCase.forNumber(valueCase_);
+        }
+
+        public static final int INT32VAL_FIELD_NUMBER = 1;
+
+        /**
+         * <code>int32 int32Val = 1;</code>
+         * @return Whether the int32Val field is set.
+         */
+        @java.lang.Override
+        public boolean hasInt32Val() {
+            return valueCase_ == 1;
+        }
+
+        /**
+         * <code>int32 int32Val = 1;</code>
+         * @return The int32Val.
+         */
+        @java.lang.Override
+        public int getInt32Val() {
+            if (valueCase_ == 1) {
+                return (java.lang.Integer) value_;
+            }
+            return 0;
+        }
+
+        public static final int UINT32VAL_FIELD_NUMBER = 2;
+
+        /**
+         * <code>uint32 uint32Val = 2;</code>
+         * @return Whether the uint32Val field is set.
+         */
+        @java.lang.Override
+        public boolean hasUint32Val() {
+            return valueCase_ == 2;
+        }
+
+        /**
+         * <code>uint32 uint32Val = 2;</code>
+         * @return The uint32Val.
+         */
+        @java.lang.Override
+        public int getUint32Val() {
+            if (valueCase_ == 2) {
+                return (java.lang.Integer) value_;
+            }
+            return 0;
+        }
+
+        public static final int INT64VAL_FIELD_NUMBER = 3;
+
+        /**
+         * <code>int64 int64Val = 3;</code>
+         * @return Whether the int64Val field is set.
+         */
+        @java.lang.Override
+        public boolean hasInt64Val() {
+            return valueCase_ == 3;
+        }
+
+        /**
+         * <code>int64 int64Val = 3;</code>
+         * @return The int64Val.
+         */
+        @java.lang.Override
+        public long getInt64Val() {
+            if (valueCase_ == 3) {
+                return (java.lang.Long) value_;
+            }
+            return 0L;
+        }
+
+        public static final int UINT64VAL_FIELD_NUMBER = 4;
+
+        /**
+         * <code>uint64 uint64Val = 4;</code>
+         * @return Whether the uint64Val field is set.
+         */
+        @java.lang.Override
+        public boolean hasUint64Val() {
+            return valueCase_ == 4;
+        }
+
+        /**
+         * <code>uint64 uint64Val = 4;</code>
+         * @return The uint64Val.
+         */
+        @java.lang.Override
+        public long getUint64Val() {
+            if (valueCase_ == 4) {
+                return (java.lang.Long) value_;
+            }
+            return 0L;
+        }
+
+        public static final int FLOATVAL_FIELD_NUMBER = 5;
+
+        /**
+         * <code>float floatVal = 5;</code>
+         * @return Whether the floatVal field is set.
+         */
+        @java.lang.Override
+        public boolean hasFloatVal() {
+            return valueCase_ == 5;
+        }
+
+        /**
+         * <code>float floatVal = 5;</code>
+         * @return The floatVal.
+         */
+        @java.lang.Override
+        public float getFloatVal() {
+            if (valueCase_ == 5) {
+                return (java.lang.Float) value_;
+            }
+            return 0F;
+        }
+
+        public static final int STRINGVAL_FIELD_NUMBER = 6;
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return Whether the stringVal field is set.
+         */
+        public boolean hasStringVal() {
+            return valueCase_ == 6;
+        }
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return The stringVal.
+         */
+        public java.lang.String getStringVal() {
+            java.lang.Object ref = "";
+            if (valueCase_ == 6) {
+                ref = value_;
+            }
+            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();
+                if (valueCase_ == 6) {
+                    value_ = s;
+                }
+                return s;
+            }
+        }
+
+        /**
+         * <code>string stringVal = 6;</code>
+         * @return The bytes for stringVal.
+         */
+        public com.google.protobuf.ByteString getStringValBytes() {
+            java.lang.Object ref = "";
+            if (valueCase_ == 6) {
+                ref = value_;
+            }
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                if (valueCase_ == 6) {
+                    value_ = b;
+                }
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int BOOLVAL_FIELD_NUMBER = 7;
+
+        /**
+         * <code>bool boolVal = 7;</code>
+         * @return Whether the boolVal field is set.
+         */
+        @java.lang.Override
+        public boolean hasBoolVal() {
+            return valueCase_ == 7;
+        }
+
+        /**
+         * <code>bool boolVal = 7;</code>
+         * @return The boolVal.
+         */
+        @java.lang.Override
+        public boolean getBoolVal() {
+            if (valueCase_ == 7) {
+                return (java.lang.Boolean) value_;
+            }
+            return false;
+        }
+
+        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 (valueCase_ == 1) {
+                output.writeInt32(1, (int) ((java.lang.Integer) value_));
+            }
+            if (valueCase_ == 2) {
+                output.writeUInt32(2, (int) ((java.lang.Integer) value_));
+            }
+            if (valueCase_ == 3) {
+                output.writeInt64(3, (long) ((java.lang.Long) value_));
+            }
+            if (valueCase_ == 4) {
+                output.writeUInt64(4, (long) ((java.lang.Long) value_));
+            }
+            if (valueCase_ == 5) {
+                output.writeFloat(5, (float) ((java.lang.Float) value_));
+            }
+            if (valueCase_ == 6) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 6, value_);
+            }
+            if (valueCase_ == 7) {
+                output.writeBool(7, (boolean) ((java.lang.Boolean) value_));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (valueCase_ == 1) {
+                size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, (int) ((java.lang.Integer) value_));
+            }
+            if (valueCase_ == 2) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, (int) ((java.lang.Integer) value_));
+            }
+            if (valueCase_ == 3) {
+                size += com.google.protobuf.CodedOutputStream.computeInt64Size(3, (long) ((java.lang.Long) value_));
+            }
+            if (valueCase_ == 4) {
+                size += com.google.protobuf.CodedOutputStream.computeUInt64Size(4, (long) ((java.lang.Long) value_));
+            }
+            if (valueCase_ == 5) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(5, (float) ((java.lang.Float) value_));
+            }
+            if (valueCase_ == 6) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, value_);
+            }
+            if (valueCase_ == 7) {
+                size += com.google.protobuf.CodedOutputStream.computeBoolSize(7, (boolean) ((java.lang.Boolean) value_));
+            }
+            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 monitoring.Monitoring.KpiValue)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiValue other = (monitoring.Monitoring.KpiValue) obj;
+            if (!getValueCase().equals(other.getValueCase()))
+                return false;
+            switch(valueCase_) {
+                case 1:
+                    if (getInt32Val() != other.getInt32Val())
+                        return false;
+                    break;
+                case 2:
+                    if (getUint32Val() != other.getUint32Val())
+                        return false;
+                    break;
+                case 3:
+                    if (getInt64Val() != other.getInt64Val())
+                        return false;
+                    break;
+                case 4:
+                    if (getUint64Val() != other.getUint64Val())
+                        return false;
+                    break;
+                case 5:
+                    if (java.lang.Float.floatToIntBits(getFloatVal()) != java.lang.Float.floatToIntBits(other.getFloatVal()))
+                        return false;
+                    break;
+                case 6:
+                    if (!getStringVal().equals(other.getStringVal()))
+                        return false;
+                    break;
+                case 7:
+                    if (getBoolVal() != other.getBoolVal())
+                        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(valueCase_) {
+                case 1:
+                    hash = (37 * hash) + INT32VAL_FIELD_NUMBER;
+                    hash = (53 * hash) + getInt32Val();
+                    break;
+                case 2:
+                    hash = (37 * hash) + UINT32VAL_FIELD_NUMBER;
+                    hash = (53 * hash) + getUint32Val();
+                    break;
+                case 3:
+                    hash = (37 * hash) + INT64VAL_FIELD_NUMBER;
+                    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getInt64Val());
+                    break;
+                case 4:
+                    hash = (37 * hash) + UINT64VAL_FIELD_NUMBER;
+                    hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getUint64Val());
+                    break;
+                case 5:
+                    hash = (37 * hash) + FLOATVAL_FIELD_NUMBER;
+                    hash = (53 * hash) + java.lang.Float.floatToIntBits(getFloatVal());
+                    break;
+                case 6:
+                    hash = (37 * hash) + STRINGVAL_FIELD_NUMBER;
+                    hash = (53 * hash) + getStringVal().hashCode();
+                    break;
+                case 7:
+                    hash = (37 * hash) + BOOLVAL_FIELD_NUMBER;
+                    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getBoolVal());
+                    break;
+                case 0:
+                default:
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiValue parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiValue prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiValue}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiValue)
+        monitoring.Monitoring.KpiValueOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiValue.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                valueCase_ = 0;
+                value_ = null;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiValue.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValue build() {
+                monitoring.Monitoring.KpiValue result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiValue buildPartial() {
+                monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                buildPartialOneofs(result);
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiValue result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            private void buildPartialOneofs(monitoring.Monitoring.KpiValue result) {
+                result.valueCase_ = valueCase_;
+                result.value_ = this.value_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiValue) {
+                    return mergeFrom((monitoring.Monitoring.KpiValue) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiValue other) {
+                if (other == monitoring.Monitoring.KpiValue.getDefaultInstance())
+                    return this;
+                switch(other.getValueCase()) {
+                    case INT32VAL:
+                        {
+                            setInt32Val(other.getInt32Val());
+                            break;
+                        }
+                    case UINT32VAL:
+                        {
+                            setUint32Val(other.getUint32Val());
+                            break;
+                        }
+                    case INT64VAL:
+                        {
+                            setInt64Val(other.getInt64Val());
+                            break;
+                        }
+                    case UINT64VAL:
+                        {
+                            setUint64Val(other.getUint64Val());
+                            break;
+                        }
+                    case FLOATVAL:
+                        {
+                            setFloatVal(other.getFloatVal());
+                            break;
+                        }
+                    case STRINGVAL:
+                        {
+                            valueCase_ = 6;
+                            value_ = other.value_;
+                            onChanged();
+                            break;
+                        }
+                    case BOOLVAL:
+                        {
+                            setBoolVal(other.getBoolVal());
+                            break;
+                        }
+                    case VALUE_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 8:
+                                {
+                                    value_ = input.readInt32();
+                                    valueCase_ = 1;
+                                    break;
+                                }
+                            // case 8
+                            case 16:
+                                {
+                                    value_ = input.readUInt32();
+                                    valueCase_ = 2;
+                                    break;
+                                }
+                            // case 16
+                            case 24:
+                                {
+                                    value_ = input.readInt64();
+                                    valueCase_ = 3;
+                                    break;
+                                }
+                            // case 24
+                            case 32:
+                                {
+                                    value_ = input.readUInt64();
+                                    valueCase_ = 4;
+                                    break;
+                                }
+                            // case 32
+                            case 45:
+                                {
+                                    value_ = input.readFloat();
+                                    valueCase_ = 5;
+                                    break;
+                                }
+                            // case 45
+                            case 50:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    valueCase_ = 6;
+                                    value_ = s;
+                                    break;
+                                }
+                            // case 50
+                            case 56:
+                                {
+                                    value_ = input.readBool();
+                                    valueCase_ = 7;
+                                    break;
+                                }
+                            // case 56
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int valueCase_ = 0;
+
+            private java.lang.Object value_;
+
+            public ValueCase getValueCase() {
+                return ValueCase.forNumber(valueCase_);
+            }
+
+            public Builder clearValue() {
+                valueCase_ = 0;
+                value_ = null;
+                onChanged();
+                return this;
+            }
+
+            private int bitField0_;
+
+            /**
+             * <code>int32 int32Val = 1;</code>
+             * @return Whether the int32Val field is set.
+             */
+            public boolean hasInt32Val() {
+                return valueCase_ == 1;
+            }
+
+            /**
+             * <code>int32 int32Val = 1;</code>
+             * @return The int32Val.
+             */
+            public int getInt32Val() {
+                if (valueCase_ == 1) {
+                    return (java.lang.Integer) value_;
+                }
+                return 0;
+            }
+
+            /**
+             * <code>int32 int32Val = 1;</code>
+             * @param value The int32Val to set.
+             * @return This builder for chaining.
+             */
+            public Builder setInt32Val(int value) {
+                valueCase_ = 1;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>int32 int32Val = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearInt32Val() {
+                if (valueCase_ == 1) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>uint32 uint32Val = 2;</code>
+             * @return Whether the uint32Val field is set.
+             */
+            public boolean hasUint32Val() {
+                return valueCase_ == 2;
+            }
+
+            /**
+             * <code>uint32 uint32Val = 2;</code>
+             * @return The uint32Val.
+             */
+            public int getUint32Val() {
+                if (valueCase_ == 2) {
+                    return (java.lang.Integer) value_;
+                }
+                return 0;
+            }
+
+            /**
+             * <code>uint32 uint32Val = 2;</code>
+             * @param value The uint32Val to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUint32Val(int value) {
+                valueCase_ = 2;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint32 uint32Val = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUint32Val() {
+                if (valueCase_ == 2) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>int64 int64Val = 3;</code>
+             * @return Whether the int64Val field is set.
+             */
+            public boolean hasInt64Val() {
+                return valueCase_ == 3;
+            }
+
+            /**
+             * <code>int64 int64Val = 3;</code>
+             * @return The int64Val.
+             */
+            public long getInt64Val() {
+                if (valueCase_ == 3) {
+                    return (java.lang.Long) value_;
+                }
+                return 0L;
+            }
+
+            /**
+             * <code>int64 int64Val = 3;</code>
+             * @param value The int64Val to set.
+             * @return This builder for chaining.
+             */
+            public Builder setInt64Val(long value) {
+                valueCase_ = 3;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>int64 int64Val = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearInt64Val() {
+                if (valueCase_ == 3) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>uint64 uint64Val = 4;</code>
+             * @return Whether the uint64Val field is set.
+             */
+            public boolean hasUint64Val() {
+                return valueCase_ == 4;
+            }
+
+            /**
+             * <code>uint64 uint64Val = 4;</code>
+             * @return The uint64Val.
+             */
+            public long getUint64Val() {
+                if (valueCase_ == 4) {
+                    return (java.lang.Long) value_;
+                }
+                return 0L;
+            }
+
+            /**
+             * <code>uint64 uint64Val = 4;</code>
+             * @param value The uint64Val to set.
+             * @return This builder for chaining.
+             */
+            public Builder setUint64Val(long value) {
+                valueCase_ = 4;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>uint64 uint64Val = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearUint64Val() {
+                if (valueCase_ == 4) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>float floatVal = 5;</code>
+             * @return Whether the floatVal field is set.
+             */
+            public boolean hasFloatVal() {
+                return valueCase_ == 5;
+            }
+
+            /**
+             * <code>float floatVal = 5;</code>
+             * @return The floatVal.
+             */
+            public float getFloatVal() {
+                if (valueCase_ == 5) {
+                    return (java.lang.Float) value_;
+                }
+                return 0F;
+            }
+
+            /**
+             * <code>float floatVal = 5;</code>
+             * @param value The floatVal to set.
+             * @return This builder for chaining.
+             */
+            public Builder setFloatVal(float value) {
+                valueCase_ = 5;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float floatVal = 5;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearFloatVal() {
+                if (valueCase_ == 5) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @return Whether the stringVal field is set.
+             */
+            @java.lang.Override
+            public boolean hasStringVal() {
+                return valueCase_ == 6;
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @return The stringVal.
+             */
+            @java.lang.Override
+            public java.lang.String getStringVal() {
+                java.lang.Object ref = "";
+                if (valueCase_ == 6) {
+                    ref = value_;
+                }
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    if (valueCase_ == 6) {
+                        value_ = s;
+                    }
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @return The bytes for stringVal.
+             */
+            @java.lang.Override
+            public com.google.protobuf.ByteString getStringValBytes() {
+                java.lang.Object ref = "";
+                if (valueCase_ == 6) {
+                    ref = value_;
+                }
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    if (valueCase_ == 6) {
+                        value_ = b;
+                    }
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @param value The stringVal to set.
+             * @return This builder for chaining.
+             */
+            public Builder setStringVal(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                valueCase_ = 6;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearStringVal() {
+                if (valueCase_ == 6) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            /**
+             * <code>string stringVal = 6;</code>
+             * @param value The bytes for stringVal to set.
+             * @return This builder for chaining.
+             */
+            public Builder setStringValBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                valueCase_ = 6;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool boolVal = 7;</code>
+             * @return Whether the boolVal field is set.
+             */
+            public boolean hasBoolVal() {
+                return valueCase_ == 7;
+            }
+
+            /**
+             * <code>bool boolVal = 7;</code>
+             * @return The boolVal.
+             */
+            public boolean getBoolVal() {
+                if (valueCase_ == 7) {
+                    return (java.lang.Boolean) value_;
+                }
+                return false;
+            }
+
+            /**
+             * <code>bool boolVal = 7;</code>
+             * @param value The boolVal to set.
+             * @return This builder for chaining.
+             */
+            public Builder setBoolVal(boolean value) {
+                valueCase_ = 7;
+                value_ = value;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>bool boolVal = 7;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearBoolVal() {
+                if (valueCase_ == 7) {
+                    valueCase_ = 0;
+                    value_ = null;
+                    onChanged();
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiValue)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiValue)
+        private static final monitoring.Monitoring.KpiValue DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValue();
+        }
+
+        public static monitoring.Monitoring.KpiValue getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiValue> PARSER = new com.google.protobuf.AbstractParser<KpiValue>() {
+
+            @java.lang.Override
+            public KpiValue 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<KpiValue> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiValue> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiListOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.Kpi> getKpiList();
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        monitoring.Monitoring.Kpi getKpi(int index);
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        int getKpiCount();
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> getKpiOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiList}
+     */
+    public static final class KpiList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiList)
+    KpiListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiList.newBuilder() to construct.
+        private KpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiList() {
+            kpi_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
+        }
+
+        public static final int KPI_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.Kpi> kpi_;
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.Kpi> getKpiList() {
+            return kpi_;
+        }
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> getKpiOrBuilderList() {
+            return kpi_;
+        }
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        @java.lang.Override
+        public int getKpiCount() {
+            return kpi_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.Kpi getKpi(int index) {
+            return kpi_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.Kpi kpi = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(int index) {
+            return kpi_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < kpi_.size(); i++) {
+                output.writeMessage(1, kpi_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < kpi_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpi_.get(i));
+            }
+            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 monitoring.Monitoring.KpiList)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
+            if (!getKpiList().equals(other.getKpiList()))
+                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 (getKpiCount() > 0) {
+                hash = (37 * hash) + KPI_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiList)
+        monitoring.Monitoring.KpiListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (kpiBuilder_ == null) {
+                    kpi_ = java.util.Collections.emptyList();
+                } else {
+                    kpi_ = null;
+                    kpiBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiList build() {
+                monitoring.Monitoring.KpiList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiList buildPartial() {
+                monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiList result) {
+                if (kpiBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        kpi_ = java.util.Collections.unmodifiableList(kpi_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.kpi_ = kpi_;
+                } else {
+                    result.kpi_ = kpiBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiList) {
+                    return mergeFrom((monitoring.Monitoring.KpiList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiList other) {
+                if (other == monitoring.Monitoring.KpiList.getDefaultInstance())
+                    return this;
+                if (kpiBuilder_ == null) {
+                    if (!other.kpi_.isEmpty()) {
+                        if (kpi_.isEmpty()) {
+                            kpi_ = other.kpi_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureKpiIsMutable();
+                            kpi_.addAll(other.kpi_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.kpi_.isEmpty()) {
+                        if (kpiBuilder_.isEmpty()) {
+                            kpiBuilder_.dispose();
+                            kpiBuilder_ = null;
+                            kpi_ = other.kpi_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            kpiBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiFieldBuilder() : null;
+                        } else {
+                            kpiBuilder_.addAllMessages(other.kpi_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    monitoring.Monitoring.Kpi m = input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry);
+                                    if (kpiBuilder_ == null) {
+                                        ensureKpiIsMutable();
+                                        kpi_.add(m);
+                                    } else {
+                                        kpiBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<monitoring.Monitoring.Kpi> kpi_ = java.util.Collections.emptyList();
+
+            private void ensureKpiIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    kpi_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>(kpi_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiBuilder_;
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.Kpi> getKpiList() {
+                if (kpiBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(kpi_);
+                } else {
+                    return kpiBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public int getKpiCount() {
+                if (kpiBuilder_ == null) {
+                    return kpi_.size();
+                } else {
+                    return kpiBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public monitoring.Monitoring.Kpi getKpi(int index) {
+                if (kpiBuilder_ == null) {
+                    return kpi_.get(index);
+                } else {
+                    return kpiBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder setKpi(int index, monitoring.Monitoring.Kpi value) {
+                if (kpiBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIsMutable();
+                    kpi_.set(index, value);
+                    onChanged();
+                } else {
+                    kpiBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder setKpi(int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
+                if (kpiBuilder_ == null) {
+                    ensureKpiIsMutable();
+                    kpi_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder addKpi(monitoring.Monitoring.Kpi value) {
+                if (kpiBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIsMutable();
+                    kpi_.add(value);
+                    onChanged();
+                } else {
+                    kpiBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder addKpi(int index, monitoring.Monitoring.Kpi value) {
+                if (kpiBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiIsMutable();
+                    kpi_.add(index, value);
+                    onChanged();
+                } else {
+                    kpiBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder addKpi(monitoring.Monitoring.Kpi.Builder builderForValue) {
+                if (kpiBuilder_ == null) {
+                    ensureKpiIsMutable();
+                    kpi_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder addKpi(int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
+                if (kpiBuilder_ == null) {
+                    ensureKpiIsMutable();
+                    kpi_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder addAllKpi(java.lang.Iterable<? extends monitoring.Monitoring.Kpi> values) {
+                if (kpiBuilder_ == null) {
+                    ensureKpiIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, kpi_);
+                    onChanged();
+                } else {
+                    kpiBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder clearKpi() {
+                if (kpiBuilder_ == null) {
+                    kpi_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    kpiBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public Builder removeKpi(int index) {
+                if (kpiBuilder_ == null) {
+                    ensureKpiIsMutable();
+                    kpi_.remove(index);
+                    onChanged();
+                } else {
+                    kpiBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public monitoring.Monitoring.Kpi.Builder getKpiBuilder(int index) {
+                return getKpiFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(int index) {
+                if (kpiBuilder_ == null) {
+                    return kpi_.get(index);
+                } else {
+                    return kpiBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> getKpiOrBuilderList() {
+                if (kpiBuilder_ != null) {
+                    return kpiBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(kpi_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public monitoring.Monitoring.Kpi.Builder addKpiBuilder() {
+                return getKpiFieldBuilder().addBuilder(monitoring.Monitoring.Kpi.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public monitoring.Monitoring.Kpi.Builder addKpiBuilder(int index) {
+                return getKpiFieldBuilder().addBuilder(index, monitoring.Monitoring.Kpi.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.Kpi kpi = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.Kpi.Builder> getKpiBuilderList() {
+                return getKpiFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> getKpiFieldBuilder() {
+                if (kpiBuilder_ == null) {
+                    kpiBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder>(kpi_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    kpi_ = null;
+                }
+                return kpiBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiList)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiList)
+        private static final monitoring.Monitoring.KpiList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiList();
+        }
+
+        public static monitoring.Monitoring.KpiList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiList> PARSER = new com.google.protobuf.AbstractParser<KpiList>() {
+
+            @java.lang.Override
+            public KpiList 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<KpiList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface KpiDescriptorListOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptorList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList();
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index);
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        int getKpiDescriptorListCount();
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> getKpiDescriptorListOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code monitoring.KpiDescriptorList}
+     */
+    public static final class KpiDescriptorList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptorList)
+    KpiDescriptorListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use KpiDescriptorList.newBuilder() to construct.
+        private KpiDescriptorList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private KpiDescriptorList() {
+            kpiDescriptorList_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new KpiDescriptorList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
+        }
+
+        public static final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
+            return kpiDescriptorList_;
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> getKpiDescriptorListOrBuilderList() {
+            return kpiDescriptorList_;
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        @java.lang.Override
+        public int getKpiDescriptorListCount() {
+            return kpiDescriptorList_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
+            return kpiDescriptorList_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(int index) {
+            return kpiDescriptorList_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < kpiDescriptorList_.size(); i++) {
+                output.writeMessage(1, kpiDescriptorList_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < kpiDescriptorList_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, kpiDescriptorList_.get(i));
+            }
+            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 monitoring.Monitoring.KpiDescriptorList)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
+            if (!getKpiDescriptorListList().equals(other.getKpiDescriptorListList()))
+                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 (getKpiDescriptorListCount() > 0) {
+                hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiDescriptorListList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.KpiDescriptorList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.KpiDescriptorList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptorList)
+        monitoring.Monitoring.KpiDescriptorListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (kpiDescriptorListBuilder_ == null) {
+                    kpiDescriptorList_ = java.util.Collections.emptyList();
+                } else {
+                    kpiDescriptorList_ = null;
+                    kpiDescriptorListBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
+                return monitoring.Monitoring.KpiDescriptorList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptorList build() {
+                monitoring.Monitoring.KpiDescriptorList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.KpiDescriptorList buildPartial() {
+                monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.KpiDescriptorList result) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.kpiDescriptorList_ = kpiDescriptorList_;
+                } else {
+                    result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.KpiDescriptorList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.KpiDescriptorList) {
+                    return mergeFrom((monitoring.Monitoring.KpiDescriptorList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.KpiDescriptorList other) {
+                if (other == monitoring.Monitoring.KpiDescriptorList.getDefaultInstance())
+                    return this;
+                if (kpiDescriptorListBuilder_ == null) {
+                    if (!other.kpiDescriptorList_.isEmpty()) {
+                        if (kpiDescriptorList_.isEmpty()) {
+                            kpiDescriptorList_ = other.kpiDescriptorList_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureKpiDescriptorListIsMutable();
+                            kpiDescriptorList_.addAll(other.kpiDescriptorList_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.kpiDescriptorList_.isEmpty()) {
+                        if (kpiDescriptorListBuilder_.isEmpty()) {
+                            kpiDescriptorListBuilder_.dispose();
+                            kpiDescriptorListBuilder_ = null;
+                            kpiDescriptorList_ = other.kpiDescriptorList_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            kpiDescriptorListBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getKpiDescriptorListFieldBuilder() : null;
+                        } else {
+                            kpiDescriptorListBuilder_.addAllMessages(other.kpiDescriptorList_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    monitoring.Monitoring.KpiDescriptor m = input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry);
+                                    if (kpiDescriptorListBuilder_ == null) {
+                                        ensureKpiDescriptorListIsMutable();
+                                        kpiDescriptorList_.add(m);
+                                    } else {
+                                        kpiDescriptorListBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_ = java.util.Collections.emptyList();
+
+            private void ensureKpiDescriptorListIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>(kpiDescriptorList_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorListBuilder_;
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
+                if (kpiDescriptorListBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(kpiDescriptorList_);
+                } else {
+                    return kpiDescriptorListBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public int getKpiDescriptorListCount() {
+                if (kpiDescriptorListBuilder_ == null) {
+                    return kpiDescriptorList_.size();
+                } else {
+                    return kpiDescriptorListBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    return kpiDescriptorList_.get(index);
+                } else {
+                    return kpiDescriptorListBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder setKpiDescriptorList(int index, monitoring.Monitoring.KpiDescriptor value) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.set(index, value);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder setKpiDescriptorList(int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder addKpiDescriptorList(monitoring.Monitoring.KpiDescriptor value) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.add(value);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder addKpiDescriptorList(int index, monitoring.Monitoring.KpiDescriptor value) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.add(index, value);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder addKpiDescriptorList(monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder addKpiDescriptorList(int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder addAllKpiDescriptorList(java.lang.Iterable<? extends monitoring.Monitoring.KpiDescriptor> values) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    ensureKpiDescriptorListIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, kpiDescriptorList_);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder clearKpiDescriptorList() {
+                if (kpiDescriptorListBuilder_ == null) {
+                    kpiDescriptorList_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public Builder removeKpiDescriptorList(int index) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    ensureKpiDescriptorListIsMutable();
+                    kpiDescriptorList_.remove(index);
+                    onChanged();
+                } else {
+                    kpiDescriptorListBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorListBuilder(int index) {
+                return getKpiDescriptorListFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(int index) {
+                if (kpiDescriptorListBuilder_ == null) {
+                    return kpiDescriptorList_.get(index);
+                } else {
+                    return kpiDescriptorListBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> getKpiDescriptorListOrBuilderList() {
+                if (kpiDescriptorListBuilder_ != null) {
+                    return kpiDescriptorListBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(kpiDescriptorList_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder() {
+                return getKpiDescriptorListFieldBuilder().addBuilder(monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder(int index) {
+                return getKpiDescriptorListFieldBuilder().addBuilder(index, monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.KpiDescriptor.Builder> getKpiDescriptorListBuilderList() {
+                return getKpiDescriptorListFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> getKpiDescriptorListFieldBuilder() {
+                if (kpiDescriptorListBuilder_ == null) {
+                    kpiDescriptorListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(kpiDescriptorList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    kpiDescriptorList_ = null;
+                }
+                return kpiDescriptorListBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptorList)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptorList)
+        private static final monitoring.Monitoring.KpiDescriptorList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptorList();
+        }
+
+        public static monitoring.Monitoring.KpiDescriptorList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<KpiDescriptorList> PARSER = new com.google.protobuf.AbstractParser<KpiDescriptorList>() {
+
+            @java.lang.Override
+            public KpiDescriptorList 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<KpiDescriptorList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<KpiDescriptorList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SubsDescriptorOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.SubsDescriptor)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        boolean hasSubsId();
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return The subsId.
+         */
+        monitoring.Monitoring.SubscriptionID getSubsId();
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         */
+        monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>float sampling_duration_s = 3;</code>
+         * @return The samplingDurationS.
+         */
+        float getSamplingDurationS();
+
+        /**
+         * <code>float sampling_interval_s = 4;</code>
+         * @return The samplingIntervalS.
+         */
+        float getSamplingIntervalS();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         * @return Whether the startTimestamp field is set.
+         */
+        boolean hasStartTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         * @return The startTimestamp.
+         */
+        context.ContextOuterClass.Timestamp getStartTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         * @return Whether the endTimestamp field is set.
+         */
+        boolean hasEndTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         * @return The endTimestamp.
+         */
+        context.ContextOuterClass.Timestamp getEndTimestamp();
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.SubsDescriptor}
+     */
+    public static final class SubsDescriptor extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.SubsDescriptor)
+    SubsDescriptorOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SubsDescriptor.newBuilder() to construct.
+        private SubsDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SubsDescriptor() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubsDescriptor();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
+        }
+
+        public static final int SUBS_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.SubscriptionID subsId_;
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSubsId() {
+            return subsId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return The subsId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubscriptionID getSubsId() {
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+
+        public static final int KPI_ID_FIELD_NUMBER = 2;
+
+        private monitoring.Monitoring.KpiId kpiId_;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
+
+        private float samplingDurationS_ = 0F;
+
+        /**
+         * <code>float sampling_duration_s = 3;</code>
+         * @return The samplingDurationS.
+         */
+        @java.lang.Override
+        public float getSamplingDurationS() {
+            return samplingDurationS_;
+        }
+
+        public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
+
+        private float samplingIntervalS_ = 0F;
+
+        /**
+         * <code>float sampling_interval_s = 4;</code>
+         * @return The samplingIntervalS.
+         */
+        @java.lang.Override
+        public float getSamplingIntervalS() {
+            return samplingIntervalS_;
+        }
+
+        public static final int START_TIMESTAMP_FIELD_NUMBER = 5;
+
+        private context.ContextOuterClass.Timestamp startTimestamp_;
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         * @return Whether the startTimestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasStartTimestamp() {
+            return startTimestamp_ != null;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         * @return The startTimestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getStartTimestamp() {
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples since X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp start_timestamp = 5;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+            return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+        }
+
+        public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
+
+        private context.ContextOuterClass.Timestamp endTimestamp_;
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         * @return Whether the endTimestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasEndTimestamp() {
+            return endTimestamp_ != null;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         * @return The endTimestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getEndTimestamp() {
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
+
+        /**
+         * <pre>
+         * used when you want something like "get the samples until X date/time"
+         * </pre>
+         *
+         * <code>.context.Timestamp end_timestamp = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+            return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+        }
+
+        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 (subsId_ != null) {
+                output.writeMessage(1, getSubsId());
+            }
+            if (kpiId_ != null) {
+                output.writeMessage(2, getKpiId());
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+                output.writeFloat(3, samplingDurationS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+                output.writeFloat(4, samplingIntervalS_);
+            }
+            if (startTimestamp_ != null) {
+                output.writeMessage(5, getStartTimestamp());
+            }
+            if (endTimestamp_ != null) {
+                output.writeMessage(6, getEndTimestamp());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (subsId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
+            }
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiId());
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingDurationS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, samplingDurationS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(samplingIntervalS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, samplingIntervalS_);
+            }
+            if (startTimestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getStartTimestamp());
+            }
+            if (endTimestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getEndTimestamp());
+            }
+            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 monitoring.Monitoring.SubsDescriptor)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.SubsDescriptor other = (monitoring.Monitoring.SubsDescriptor) obj;
+            if (hasSubsId() != other.hasSubsId())
+                return false;
+            if (hasSubsId()) {
+                if (!getSubsId().equals(other.getSubsId()))
+                    return false;
+            }
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (java.lang.Float.floatToIntBits(getSamplingDurationS()) != java.lang.Float.floatToIntBits(other.getSamplingDurationS()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getSamplingIntervalS()) != java.lang.Float.floatToIntBits(other.getSamplingIntervalS()))
+                return false;
+            if (hasStartTimestamp() != other.hasStartTimestamp())
+                return false;
+            if (hasStartTimestamp()) {
+                if (!getStartTimestamp().equals(other.getStartTimestamp()))
+                    return false;
+            }
+            if (hasEndTimestamp() != other.hasEndTimestamp())
+                return false;
+            if (hasEndTimestamp()) {
+                if (!getEndTimestamp().equals(other.getEndTimestamp()))
+                    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 (hasSubsId()) {
+                hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSubsId().hashCode();
+            }
+            if (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingDurationS());
+            hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSamplingIntervalS());
+            if (hasStartTimestamp()) {
+                hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getStartTimestamp().hashCode();
+            }
+            if (hasEndTimestamp()) {
+                hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getEndTimestamp().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.SubsDescriptor prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.SubsDescriptor}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.SubsDescriptor)
+        monitoring.Monitoring.SubsDescriptorOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                samplingDurationS_ = 0F;
+                samplingIntervalS_ = 0F;
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
+                    startTimestampBuilder_ = null;
+                }
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
+                    endTimestampBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
+                return monitoring.Monitoring.SubsDescriptor.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsDescriptor build() {
+                monitoring.Monitoring.SubsDescriptor result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsDescriptor buildPartial() {
+                monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.SubsDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.samplingDurationS_ = samplingDurationS_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.samplingIntervalS_ = samplingIntervalS_;
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.startTimestamp_ = startTimestampBuilder_ == null ? startTimestamp_ : startTimestampBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.endTimestamp_ = endTimestampBuilder_ == null ? endTimestamp_ : endTimestampBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.SubsDescriptor) {
+                    return mergeFrom((monitoring.Monitoring.SubsDescriptor) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.SubsDescriptor other) {
+                if (other == monitoring.Monitoring.SubsDescriptor.getDefaultInstance())
+                    return this;
+                if (other.hasSubsId()) {
+                    mergeSubsId(other.getSubsId());
+                }
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (other.getSamplingDurationS() != 0F) {
+                    setSamplingDurationS(other.getSamplingDurationS());
+                }
+                if (other.getSamplingIntervalS() != 0F) {
+                    setSamplingIntervalS(other.getSamplingIntervalS());
+                }
+                if (other.hasStartTimestamp()) {
+                    mergeStartTimestamp(other.getStartTimestamp());
+                }
+                if (other.hasEndTimestamp()) {
+                    mergeEndTimestamp(other.getEndTimestamp());
+                }
+                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(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 29:
+                                {
+                                    samplingDurationS_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            case 37:
+                                {
+                                    samplingIntervalS_ = input.readFloat();
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 37
+                            case 42:
+                                {
+                                    input.readMessage(getStartTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getEndTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.SubscriptionID subsId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             * @return Whether the subsId field is set.
+             */
+            public boolean hasSubsId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             * @return The subsId.
+             */
+            public monitoring.Monitoring.SubscriptionID getSubsId() {
+                if (subsIdBuilder_ == null) {
+                    return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+                } else {
+                    return subsIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
+                if (subsIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    subsId_ = value;
+                } else {
+                    subsIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+                if (subsIdBuilder_ == null) {
+                    subsId_ = builderForValue.build();
+                } else {
+                    subsIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
+                if (subsIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
+                    } else {
+                        subsId_ = value;
+                    }
+                } else {
+                    subsIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder clearSubsId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getSubsIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+                if (subsIdBuilder_ != null) {
+                    return subsIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> getSubsIdFieldBuilder() {
+                if (subsIdBuilder_ == null) {
+                    subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(getSubsId(), getParentForChildren(), isClean());
+                    subsId_ = null;
+                }
+                return subsIdBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiId kpiId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiId kpi_id = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
+
+            private float samplingDurationS_;
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @return The samplingDurationS.
+             */
+            @java.lang.Override
+            public float getSamplingDurationS() {
+                return samplingDurationS_;
+            }
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @param value The samplingDurationS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSamplingDurationS(float value) {
+                samplingDurationS_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float sampling_duration_s = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSamplingDurationS() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                samplingDurationS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private float samplingIntervalS_;
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @return The samplingIntervalS.
+             */
+            @java.lang.Override
+            public float getSamplingIntervalS() {
+                return samplingIntervalS_;
+            }
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @param value The samplingIntervalS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSamplingIntervalS(float value) {
+                samplingIntervalS_ = value;
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>float sampling_interval_s = 4;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSamplingIntervalS() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                samplingIntervalS_ = 0F;
+                onChanged();
+                return this;
+            }
+
+            private context.ContextOuterClass.Timestamp startTimestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             * @return Whether the startTimestamp field is set.
+             */
+            public boolean hasStartTimestamp() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             * @return The startTimestamp.
+             */
+            public context.ContextOuterClass.Timestamp getStartTimestamp() {
+                if (startTimestampBuilder_ == null) {
+                    return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+                } else {
+                    return startTimestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (startTimestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    startTimestamp_ = value;
+                } else {
+                    startTimestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public Builder setStartTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (startTimestampBuilder_ == null) {
+                    startTimestamp_ = builderForValue.build();
+                } else {
+                    startTimestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (startTimestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && startTimestamp_ != null && startTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getStartTimestampBuilder().mergeFrom(value);
+                    } else {
+                        startTimestamp_ = value;
+                    }
+                } else {
+                    startTimestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public Builder clearStartTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                startTimestamp_ = null;
+                if (startTimestampBuilder_ != null) {
+                    startTimestampBuilder_.dispose();
+                    startTimestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getStartTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
+                if (startTimestampBuilder_ != null) {
+                    return startTimestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples since X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp start_timestamp = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getStartTimestampFieldBuilder() {
+                if (startTimestampBuilder_ == null) {
+                    startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getStartTimestamp(), getParentForChildren(), isClean());
+                    startTimestamp_ = null;
+                }
+                return startTimestampBuilder_;
+            }
+
+            private context.ContextOuterClass.Timestamp endTimestamp_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             * @return Whether the endTimestamp field is set.
+             */
+            public boolean hasEndTimestamp() {
+                return ((bitField0_ & 0x00000020) != 0);
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             * @return The endTimestamp.
+             */
+            public context.ContextOuterClass.Timestamp getEndTimestamp() {
+                if (endTimestampBuilder_ == null) {
+                    return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+                } else {
+                    return endTimestampBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (endTimestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    endTimestamp_ = value;
+                } else {
+                    endTimestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public Builder setEndTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (endTimestampBuilder_ == null) {
+                    endTimestamp_ = builderForValue.build();
+                } else {
+                    endTimestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (endTimestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0) && endTimestamp_ != null && endTimestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getEndTimestampBuilder().mergeFrom(value);
+                    } else {
+                        endTimestamp_ = value;
+                    }
+                } else {
+                    endTimestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public Builder clearEndTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                endTimestamp_ = null;
+                if (endTimestampBuilder_ != null) {
+                    endTimestampBuilder_.dispose();
+                    endTimestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return getEndTimestampFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
+                if (endTimestampBuilder_ != null) {
+                    return endTimestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
+                }
+            }
+
+            /**
+             * <pre>
+             * used when you want something like "get the samples until X date/time"
+             * </pre>
+             *
+             * <code>.context.Timestamp end_timestamp = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getEndTimestampFieldBuilder() {
+                if (endTimestampBuilder_ == null) {
+                    endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getEndTimestamp(), getParentForChildren(), isClean());
+                    endTimestamp_ = null;
+                }
+                return endTimestampBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.SubsDescriptor)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.SubsDescriptor)
+        private static final monitoring.Monitoring.SubsDescriptor DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.SubsDescriptor();
+        }
+
+        public static monitoring.Monitoring.SubsDescriptor getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SubsDescriptor> PARSER = new com.google.protobuf.AbstractParser<SubsDescriptor>() {
+
+            @java.lang.Override
+            public SubsDescriptor 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<SubsDescriptor> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SubsDescriptor> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SubscriptionIDOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.SubscriptionID)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        boolean hasSubsId();
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         * @return The subsId.
+         */
+        context.ContextOuterClass.Uuid getSubsId();
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.SubscriptionID}
+     */
+    public static final class SubscriptionID extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.SubscriptionID)
+    SubscriptionIDOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SubscriptionID.newBuilder() to construct.
+        private SubscriptionID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SubscriptionID() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubscriptionID();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
+        }
+
+        public static final int SUBS_ID_FIELD_NUMBER = 1;
+
+        private context.ContextOuterClass.Uuid subsId_;
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSubsId() {
+            return subsId_ != null;
+        }
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         * @return The subsId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getSubsId() {
+            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+        }
+
+        /**
+         * <code>.context.Uuid subs_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
+            return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+        }
+
+        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 (subsId_ != null) {
+                output.writeMessage(1, getSubsId());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (subsId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
+            }
+            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 monitoring.Monitoring.SubscriptionID)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.SubscriptionID other = (monitoring.Monitoring.SubscriptionID) obj;
+            if (hasSubsId() != other.hasSubsId())
+                return false;
+            if (hasSubsId()) {
+                if (!getSubsId().equals(other.getSubsId()))
+                    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 (hasSubsId()) {
+                hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSubsId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubscriptionID parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.SubscriptionID prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.SubscriptionID}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.SubscriptionID)
+        monitoring.Monitoring.SubscriptionIDOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
+                return monitoring.Monitoring.SubscriptionID.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubscriptionID build() {
+                monitoring.Monitoring.SubscriptionID result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubscriptionID buildPartial() {
+                monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.SubscriptionID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.SubscriptionID) {
+                    return mergeFrom((monitoring.Monitoring.SubscriptionID) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.SubscriptionID other) {
+                if (other == monitoring.Monitoring.SubscriptionID.getDefaultInstance())
+                    return this;
+                if (other.hasSubsId()) {
+                    mergeSubsId(other.getSubsId());
+                }
+                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(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid subsId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             * @return Whether the subsId field is set.
+             */
+            public boolean hasSubsId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             * @return The subsId.
+             */
+            public context.ContextOuterClass.Uuid getSubsId() {
+                if (subsIdBuilder_ == null) {
+                    return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+                } else {
+                    return subsIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public Builder setSubsId(context.ContextOuterClass.Uuid value) {
+                if (subsIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    subsId_ = value;
+                } else {
+                    subsIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public Builder setSubsId(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (subsIdBuilder_ == null) {
+                    subsId_ = builderForValue.build();
+                } else {
+                    subsIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
+                if (subsIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
+                    } else {
+                        subsId_ = value;
+                    }
+                } else {
+                    subsIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public Builder clearSubsId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getSubsIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
+                if (subsIdBuilder_ != null) {
+                    return subsIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid subs_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getSubsIdFieldBuilder() {
+                if (subsIdBuilder_ == null) {
+                    subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getSubsId(), getParentForChildren(), isClean());
+                    subsId_ = null;
+                }
+                return subsIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.SubscriptionID)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.SubscriptionID)
+        private static final monitoring.Monitoring.SubscriptionID DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.SubscriptionID();
+        }
+
+        public static monitoring.Monitoring.SubscriptionID getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SubscriptionID> PARSER = new com.google.protobuf.AbstractParser<SubscriptionID>() {
+
+            @java.lang.Override
+            public SubscriptionID 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<SubscriptionID> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SubscriptionID> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SubsResponseOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.SubsResponse)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        boolean hasSubsId();
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return The subsId.
+         */
+        monitoring.Monitoring.SubscriptionID getSubsId();
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         */
+        monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         * @return Whether the kpiList field is set.
+         */
+        boolean hasKpiList();
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         * @return The kpiList.
+         */
+        monitoring.Monitoring.KpiList getKpiList();
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         */
+        monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code monitoring.SubsResponse}
+     */
+    public static final class SubsResponse extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.SubsResponse)
+    SubsResponseOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SubsResponse.newBuilder() to construct.
+        private SubsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SubsResponse() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubsResponse();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
+        }
+
+        public static final int SUBS_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.SubscriptionID subsId_;
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return Whether the subsId field is set.
+         */
+        @java.lang.Override
+        public boolean hasSubsId() {
+            return subsId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         * @return The subsId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubscriptionID getSubsId() {
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+
+        /**
+         * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+            return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+        }
+
+        public static final int KPI_LIST_FIELD_NUMBER = 2;
+
+        private monitoring.Monitoring.KpiList kpiList_;
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         * @return Whether the kpiList field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiList() {
+            return kpiList_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         * @return The kpiList.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiList getKpiList() {
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+        }
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 2;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+        }
+
+        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 (subsId_ != null) {
+                output.writeMessage(1, getSubsId());
+            }
+            if (kpiList_ != null) {
+                output.writeMessage(2, getKpiList());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (subsId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSubsId());
+            }
+            if (kpiList_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getKpiList());
+            }
+            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 monitoring.Monitoring.SubsResponse)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.SubsResponse other = (monitoring.Monitoring.SubsResponse) obj;
+            if (hasSubsId() != other.hasSubsId())
+                return false;
+            if (hasSubsId()) {
+                if (!getSubsId().equals(other.getSubsId()))
+                    return false;
+            }
+            if (hasKpiList() != other.hasKpiList())
+                return false;
+            if (hasKpiList()) {
+                if (!getKpiList().equals(other.getKpiList()))
+                    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 (hasSubsId()) {
+                hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getSubsId().hashCode();
+            }
+            if (hasKpiList()) {
+                hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsResponse parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.SubsResponse prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.SubsResponse}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.SubsResponse)
+        monitoring.Monitoring.SubsResponseOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
+                    kpiListBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
+                return monitoring.Monitoring.SubsResponse.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsResponse build() {
+                monitoring.Monitoring.SubsResponse result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsResponse buildPartial() {
+                monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(monitoring.Monitoring.SubsResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.subsId_ = subsIdBuilder_ == null ? subsId_ : subsIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.SubsResponse) {
+                    return mergeFrom((monitoring.Monitoring.SubsResponse) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.SubsResponse other) {
+                if (other == monitoring.Monitoring.SubsResponse.getDefaultInstance())
+                    return this;
+                if (other.hasSubsId()) {
+                    mergeSubsId(other.getSubsId());
+                }
+                if (other.hasKpiList()) {
+                    mergeKpiList(other.getKpiList());
+                }
+                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(getSubsIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private monitoring.Monitoring.SubscriptionID subsId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             * @return Whether the subsId field is set.
+             */
+            public boolean hasSubsId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             * @return The subsId.
+             */
+            public monitoring.Monitoring.SubscriptionID getSubsId() {
+                if (subsIdBuilder_ == null) {
+                    return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+                } else {
+                    return subsIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
+                if (subsIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    subsId_ = value;
+                } else {
+                    subsIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder setSubsId(monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
+                if (subsIdBuilder_ == null) {
+                    subsId_ = builderForValue.build();
+                } else {
+                    subsIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
+                if (subsIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && subsId_ != null && subsId_ != monitoring.Monitoring.SubscriptionID.getDefaultInstance()) {
+                        getSubsIdBuilder().mergeFrom(value);
+                    } else {
+                        subsId_ = value;
+                    }
+                } else {
+                    subsIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public Builder clearSubsId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                subsId_ = null;
+                if (subsIdBuilder_ != null) {
+                    subsIdBuilder_.dispose();
+                    subsIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getSubsIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
+                if (subsIdBuilder_ != null) {
+                    return subsIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.SubscriptionID subs_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> getSubsIdFieldBuilder() {
+                if (subsIdBuilder_ == null) {
+                    subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(getSubsId(), getParentForChildren(), isClean());
+                    subsId_ = null;
+                }
+                return subsIdBuilder_;
+            }
+
+            private monitoring.Monitoring.KpiList kpiList_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             * @return Whether the kpiList field is set.
+             */
+            public boolean hasKpiList() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             * @return The kpiList.
+             */
+            public monitoring.Monitoring.KpiList getKpiList() {
+                if (kpiListBuilder_ == null) {
+                    return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+                } else {
+                    return kpiListBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public Builder setKpiList(monitoring.Monitoring.KpiList value) {
+                if (kpiListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiList_ = value;
+                } else {
+                    kpiListBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = builderForValue.build();
+                } else {
+                    kpiListBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
+                if (kpiListBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
+                    } else {
+                        kpiList_ = value;
+                    }
+                } else {
+                    kpiListBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public Builder clearKpiList() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
+                    kpiListBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getKpiListFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
+                if (kpiListBuilder_ != null) {
+                    return kpiListBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.KpiList kpi_list = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> getKpiListFieldBuilder() {
+                if (kpiListBuilder_ == null) {
+                    kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(getKpiList(), getParentForChildren(), isClean());
+                    kpiList_ = null;
+                }
+                return kpiListBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.SubsResponse)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.SubsResponse)
+        private static final monitoring.Monitoring.SubsResponse DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.SubsResponse();
+        }
+
+        public static monitoring.Monitoring.SubsResponse getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SubsResponse> PARSER = new com.google.protobuf.AbstractParser<SubsResponse>() {
+
+            @java.lang.Override
+            public SubsResponse 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<SubsResponse> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SubsResponse> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface SubsListOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.SubsList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.SubsDescriptor> getSubsDescriptorList();
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index);
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        int getSubsDescriptorCount();
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> getSubsDescriptorOrBuilderList();
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(int index);
+    }
+
+    /**
+     * Protobuf type {@code monitoring.SubsList}
+     */
+    public static final class SubsList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.SubsList)
+    SubsListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use SubsList.newBuilder() to construct.
+        private SubsList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private SubsList() {
+            subsDescriptor_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new SubsList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class);
+        }
+
+        public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_;
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.SubsDescriptor> getSubsDescriptorList() {
+            return subsDescriptor_;
+        }
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> getSubsDescriptorOrBuilderList() {
+            return subsDescriptor_;
+        }
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public int getSubsDescriptorCount() {
+            return subsDescriptor_.size();
+        }
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) {
+            return subsDescriptor_.get(index);
+        }
+
+        /**
+         * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(int index) {
+            return subsDescriptor_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < subsDescriptor_.size(); i++) {
+                output.writeMessage(1, subsDescriptor_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < subsDescriptor_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, subsDescriptor_.get(i));
+            }
+            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 monitoring.Monitoring.SubsList)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
+            if (!getSubsDescriptorList().equals(other.getSubsDescriptorList()))
+                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 (getSubsDescriptorCount() > 0) {
+                hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
+                hash = (53 * hash) + getSubsDescriptorList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static monitoring.Monitoring.SubsList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(monitoring.Monitoring.SubsList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code monitoring.SubsList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.SubsList)
+        monitoring.Monitoring.SubsListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class);
+            }
+
+            // Construct using monitoring.Monitoring.SubsList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (subsDescriptorBuilder_ == null) {
+                    subsDescriptor_ = java.util.Collections.emptyList();
+                } else {
+                    subsDescriptor_ = null;
+                    subsDescriptorBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsList getDefaultInstanceForType() {
+                return monitoring.Monitoring.SubsList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsList build() {
+                monitoring.Monitoring.SubsList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.SubsList buildPartial() {
+                monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.SubsList result) {
+                if (subsDescriptorBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.subsDescriptor_ = subsDescriptor_;
+                } else {
+                    result.subsDescriptor_ = subsDescriptorBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.SubsList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.SubsList) {
+                    return mergeFrom((monitoring.Monitoring.SubsList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(monitoring.Monitoring.SubsList other) {
+                if (other == monitoring.Monitoring.SubsList.getDefaultInstance())
+                    return this;
+                if (subsDescriptorBuilder_ == null) {
+                    if (!other.subsDescriptor_.isEmpty()) {
+                        if (subsDescriptor_.isEmpty()) {
+                            subsDescriptor_ = other.subsDescriptor_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureSubsDescriptorIsMutable();
+                            subsDescriptor_.addAll(other.subsDescriptor_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.subsDescriptor_.isEmpty()) {
+                        if (subsDescriptorBuilder_.isEmpty()) {
+                            subsDescriptorBuilder_.dispose();
+                            subsDescriptorBuilder_ = null;
+                            subsDescriptor_ = other.subsDescriptor_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            subsDescriptorBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubsDescriptorFieldBuilder() : null;
+                        } else {
+                            subsDescriptorBuilder_.addAllMessages(other.subsDescriptor_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    monitoring.Monitoring.SubsDescriptor m = input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry);
+                                    if (subsDescriptorBuilder_ == null) {
+                                        ensureSubsDescriptorIsMutable();
+                                        subsDescriptor_.add(m);
+                                    } else {
+                                        subsDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_ = java.util.Collections.emptyList();
+
+            private void ensureSubsDescriptorIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    subsDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.SubsDescriptor>(subsDescriptor_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> subsDescriptorBuilder_;
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.SubsDescriptor> getSubsDescriptorList() {
+                if (subsDescriptorBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(subsDescriptor_);
+                } else {
+                    return subsDescriptorBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public int getSubsDescriptorCount() {
+                if (subsDescriptorBuilder_ == null) {
+                    return subsDescriptor_.size();
+                } else {
+                    return subsDescriptorBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) {
+                if (subsDescriptorBuilder_ == null) {
+                    return subsDescriptor_.get(index);
+                } else {
+                    return subsDescriptorBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder setSubsDescriptor(int index, monitoring.Monitoring.SubsDescriptor value) {
+                if (subsDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.set(index, value);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder setSubsDescriptor(int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
+                if (subsDescriptorBuilder_ == null) {
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder addSubsDescriptor(monitoring.Monitoring.SubsDescriptor value) {
+                if (subsDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.add(value);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder addSubsDescriptor(int index, monitoring.Monitoring.SubsDescriptor value) {
+                if (subsDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.add(index, value);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder addSubsDescriptor(monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
+                if (subsDescriptorBuilder_ == null) {
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder addSubsDescriptor(int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
+                if (subsDescriptorBuilder_ == null) {
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder addAllSubsDescriptor(java.lang.Iterable<? extends monitoring.Monitoring.SubsDescriptor> values) {
+                if (subsDescriptorBuilder_ == null) {
+                    ensureSubsDescriptorIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, subsDescriptor_);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder clearSubsDescriptor() {
+                if (subsDescriptorBuilder_ == null) {
+                    subsDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public Builder removeSubsDescriptor(int index) {
+                if (subsDescriptorBuilder_ == null) {
+                    ensureSubsDescriptorIsMutable();
+                    subsDescriptor_.remove(index);
+                    onChanged();
+                } else {
+                    subsDescriptorBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.SubsDescriptor.Builder getSubsDescriptorBuilder(int index) {
+                return getSubsDescriptorFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(int index) {
+                if (subsDescriptorBuilder_ == null) {
+                    return subsDescriptor_.get(index);
+                } else {
+                    return subsDescriptorBuilder_.getMessageOrBuilder(index);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> getSubsDescriptorOrBuilderList() {
+                if (subsDescriptorBuilder_ != null) {
+                    return subsDescriptorBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(subsDescriptor_);
+                }
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder() {
+                return getSubsDescriptorFieldBuilder().addBuilder(monitoring.Monitoring.SubsDescriptor.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder(int index) {
+                return getSubsDescriptorFieldBuilder().addBuilder(index, monitoring.Monitoring.SubsDescriptor.getDefaultInstance());
+            }
+
+            /**
+             * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.SubsDescriptor.Builder> getSubsDescriptorBuilderList() {
+                return getSubsDescriptorFieldBuilder().getBuilderList();
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> getSubsDescriptorFieldBuilder() {
+                if (subsDescriptorBuilder_ == null) {
+                    subsDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder>(subsDescriptor_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    subsDescriptor_ = null;
+                }
+                return subsDescriptorBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.SubsList)
+        }
+
+        // @@protoc_insertion_point(class_scope:monitoring.SubsList)
+        private static final monitoring.Monitoring.SubsList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.SubsList();
+        }
+
+        public static monitoring.Monitoring.SubsList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<SubsList> PARSER = new com.google.protobuf.AbstractParser<SubsList>() {
+
+            @java.lang.Override
+            public SubsList 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<SubsList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<SubsList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public monitoring.Monitoring.SubsList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface AlarmDescriptorOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.AlarmDescriptor)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        boolean hasAlarmId();
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        monitoring.Monitoring.AlarmID getAlarmId();
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
+
+        /**
+         * <code>string alarm_description = 2;</code>
+         * @return The alarmDescription.
+         */
+        java.lang.String getAlarmDescription();
+
+        /**
+         * <code>string alarm_description = 2;</code>
+         * @return The bytes for alarmDescription.
+         */
+        com.google.protobuf.ByteString getAlarmDescriptionBytes();
+
+        /**
+         * <code>string name = 3;</code>
+         * @return The name.
+         */
+        java.lang.String getName();
+
+        /**
+         * <code>string name = 3;</code>
+         * @return The bytes for name.
+         */
+        com.google.protobuf.ByteString getNameBytes();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         * @return Whether the kpiId field is set.
+         */
+        boolean hasKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         * @return The kpiId.
+         */
+        monitoring.Monitoring.KpiId getKpiId();
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         */
+        monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         * @return Whether the kpiValueRange field is set.
+         */
+        boolean hasKpiValueRange();
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         * @return The kpiValueRange.
+         */
+        monitoring.Monitoring.KpiValueRange getKpiValueRange();
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         */
+        monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder();
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         * @return Whether the timestamp field is set.
+         */
+        boolean hasTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         * @return The timestamp.
+         */
+        context.ContextOuterClass.Timestamp getTimestamp();
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         */
+        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+    }
 
-    public static final int SAMPLING_RATE_S_FIELD_NUMBER = 3;
-    private float samplingRateS_;
     /**
-     * <pre>
-     * Pending add field to reflect Available Device Protocols
-     * </pre>
-     *
-     * <code>float sampling_rate_s = 3;</code>
-     * @return The samplingRateS.
+     * Protobuf type {@code monitoring.AlarmDescriptor}
      */
-    @java.lang.Override
-    public float getSamplingRateS() {
-      return samplingRateS_;
-    }
+    public static final class AlarmDescriptor extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.AlarmDescriptor)
+    AlarmDescriptorOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use AlarmDescriptor.newBuilder() to construct.
+        private AlarmDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private AlarmDescriptor() {
+            alarmDescription_ = "";
+            name_ = "";
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AlarmDescriptor();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
+        }
+
+        public static final int ALARM_ID_FIELD_NUMBER = 1;
+
+        private monitoring.Monitoring.AlarmID alarmId_;
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        @java.lang.Override
+        public boolean hasAlarmId() {
+            return alarmId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmID getAlarmId() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
+
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
+
+        public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object alarmDescription_ = "";
+
+        /**
+         * <code>string alarm_description = 2;</code>
+         * @return The alarmDescription.
+         */
+        @java.lang.Override
+        public java.lang.String getAlarmDescription() {
+            java.lang.Object ref = alarmDescription_;
+            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();
+                alarmDescription_ = s;
+                return s;
+            }
+        }
+
+        /**
+         * <code>string alarm_description = 2;</code>
+         * @return The bytes for alarmDescription.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getAlarmDescriptionBytes() {
+            java.lang.Object ref = alarmDescription_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                alarmDescription_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
+
+        public static final int NAME_FIELD_NUMBER = 3;
+
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object name_ = "";
+
+        /**
+         * <code>string name = 3;</code>
+         * @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;
+            }
+        }
+
+        /**
+         * <code>string name = 3;</code>
+         * @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 KPI_ID_FIELD_NUMBER = 4;
+
+        private monitoring.Monitoring.KpiId kpiId_;
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         * @return Whether the kpiId field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiId() {
+            return kpiId_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         * @return The kpiId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiId getKpiId() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        /**
+         * <code>.monitoring.KpiId kpi_id = 4;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+            return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+        }
+
+        public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
+
+        private monitoring.Monitoring.KpiValueRange kpiValueRange_;
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         * @return Whether the kpiValueRange field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiValueRange() {
+            return kpiValueRange_ != null;
+        }
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         * @return The kpiValueRange.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
+            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+        }
+
+        /**
+         * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
+            return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+        }
+
+        public static final int TIMESTAMP_FIELD_NUMBER = 6;
+
+        private context.ContextOuterClass.Timestamp timestamp_;
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         * @return Whether the timestamp field is set.
+         */
+        @java.lang.Override
+        public boolean hasTimestamp() {
+            return timestamp_ != null;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         * @return The timestamp.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Timestamp getTimestamp() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        /**
+         * <code>.context.Timestamp timestamp = 6;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+        }
+
+        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 (alarmId_ != null) {
+                output.writeMessage(1, getAlarmId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
+            }
+            if (kpiId_ != null) {
+                output.writeMessage(4, getKpiId());
+            }
+            if (kpiValueRange_ != null) {
+                output.writeMessage(5, getKpiValueRange());
+            }
+            if (timestamp_ != null) {
+                output.writeMessage(6, getTimestamp());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (alarmId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmDescription_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
+            }
+            if (kpiId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getKpiId());
+            }
+            if (kpiValueRange_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getKpiValueRange());
+            }
+            if (timestamp_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getTimestamp());
+            }
+            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 monitoring.Monitoring.AlarmDescriptor)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.AlarmDescriptor other = (monitoring.Monitoring.AlarmDescriptor) obj;
+            if (hasAlarmId() != other.hasAlarmId())
+                return false;
+            if (hasAlarmId()) {
+                if (!getAlarmId().equals(other.getAlarmId()))
+                    return false;
+            }
+            if (!getAlarmDescription().equals(other.getAlarmDescription()))
+                return false;
+            if (!getName().equals(other.getName()))
+                return false;
+            if (hasKpiId() != other.hasKpiId())
+                return false;
+            if (hasKpiId()) {
+                if (!getKpiId().equals(other.getKpiId()))
+                    return false;
+            }
+            if (hasKpiValueRange() != other.hasKpiValueRange())
+                return false;
+            if (hasKpiValueRange()) {
+                if (!getKpiValueRange().equals(other.getKpiValueRange()))
+                    return false;
+            }
+            if (hasTimestamp() != other.hasTimestamp())
+                return false;
+            if (hasTimestamp()) {
+                if (!getTimestamp().equals(other.getTimestamp()))
+                    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 (hasAlarmId()) {
+                hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getAlarmId().hashCode();
+            }
+            hash = (37 * hash) + ALARM_DESCRIPTION_FIELD_NUMBER;
+            hash = (53 * hash) + getAlarmDescription().hashCode();
+            hash = (37 * hash) + NAME_FIELD_NUMBER;
+            hash = (53 * hash) + getName().hashCode();
+            if (hasKpiId()) {
+                hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiId().hashCode();
+            }
+            if (hasKpiValueRange()) {
+                hash = (37 * hash) + KPI_VALUE_RANGE_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiValueRange().hashCode();
+            }
+            if (hasTimestamp()) {
+                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+                hash = (53 * hash) + getTimestamp().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (monitoringWindowS_ != 0F) {
-        output.writeFloat(2, monitoringWindowS_);
-      }
-      if (samplingRateS_ != 0F) {
-        output.writeFloat(3, samplingRateS_);
-      }
-      unknownFields.writeTo(output);
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (monitoringWindowS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, monitoringWindowS_);
-      }
-      if (samplingRateS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingRateS_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.MonitorKpiRequest)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.MonitorKpiRequest other = (monitoring.Monitoring.MonitorKpiRequest) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
-          != java.lang.Float.floatToIntBits(
-              other.getMonitoringWindowS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingRateS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingRateS())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getMonitoringWindowS());
-      hash = (37 * hash) + SAMPLING_RATE_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingRateS());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.MonitorKpiRequest parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.MonitorKpiRequest prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.MonitorKpiRequest}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.MonitorKpiRequest)
-        monitoring.Monitoring.MonitorKpiRequestOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.MonitorKpiRequest.class, monitoring.Monitoring.MonitorKpiRequest.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.MonitorKpiRequest.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        monitoringWindowS_ = 0F;
-
-        samplingRateS_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_MonitorKpiRequest_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
-        return monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest build() {
-        monitoring.Monitoring.MonitorKpiRequest result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.MonitorKpiRequest buildPartial() {
-        monitoring.Monitoring.MonitorKpiRequest result = new monitoring.Monitoring.MonitorKpiRequest(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        result.monitoringWindowS_ = monitoringWindowS_;
-        result.samplingRateS_ = samplingRateS_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.MonitorKpiRequest) {
-          return mergeFrom((monitoring.Monitoring.MonitorKpiRequest)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.MonitorKpiRequest other) {
-        if (other == monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.getMonitoringWindowS() != 0F) {
-          setMonitoringWindowS(other.getMonitoringWindowS());
-        }
-        if (other.getSamplingRateS() != 0F) {
-          setSamplingRateS(other.getSamplingRateS());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.MonitorKpiRequest parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.MonitorKpiRequest) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private float monitoringWindowS_ ;
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return The monitoringWindowS.
-       */
-      @java.lang.Override
-      public float getMonitoringWindowS() {
-        return monitoringWindowS_;
-      }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @param value The monitoringWindowS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMonitoringWindowS(float value) {
-        
-        monitoringWindowS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMonitoringWindowS() {
-        
-        monitoringWindowS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float samplingRateS_ ;
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @return The samplingRateS.
-       */
-      @java.lang.Override
-      public float getSamplingRateS() {
-        return samplingRateS_;
-      }
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @param value The samplingRateS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingRateS(float value) {
-        
-        samplingRateS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * Pending add field to reflect Available Device Protocols
-       * </pre>
-       *
-       * <code>float sampling_rate_s = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingRateS() {
-        
-        samplingRateS_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.MonitorKpiRequest)
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.MonitorKpiRequest)
-    private static final monitoring.Monitoring.MonitorKpiRequest DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.MonitorKpiRequest();
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static monitoring.Monitoring.MonitorKpiRequest getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private static final com.google.protobuf.Parser<MonitorKpiRequest>
-        PARSER = new com.google.protobuf.AbstractParser<MonitorKpiRequest>() {
-      @java.lang.Override
-      public MonitorKpiRequest parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MonitorKpiRequest(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<MonitorKpiRequest> parser() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<MonitorKpiRequest> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.MonitorKpiRequest getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-  }
+        public static Builder newBuilder(monitoring.Monitoring.AlarmDescriptor prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-  public interface KpiQueryOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiQuery)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiId> 
-        getKpiIdsList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    monitoring.Monitoring.KpiId getKpiIds(int index);
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    int getKpiIdsCount();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdsOrBuilderList();
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-        int index);
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    float getMonitoringWindowS();
+        /**
+         * Protobuf type {@code monitoring.AlarmDescriptor}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.AlarmDescriptor)
+        monitoring.Monitoring.AlarmDescriptorOrBuilder {
 
-    /**
-     * <pre>
-     * used when you want something like "get the last N many samples
-     * </pre>
-     *
-     * <code>uint32 last_n_samples = 3;</code>
-     * @return The lastNSamples.
-     */
-    int getLastNSamples();
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+            }
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     * @return Whether the startTimestamp field is set.
-     */
-    boolean hasStartTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     * @return The startTimestamp.
-     */
-    context.ContextOuterClass.Timestamp getStartTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
+            }
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     * @return Whether the endTimestamp field is set.
-     */
-    boolean hasEndTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     * @return The endTimestamp.
-     */
-    context.ContextOuterClass.Timestamp getEndTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiQuery}
-   */
-  public static final class KpiQuery extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiQuery)
-      KpiQueryOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiQuery.newBuilder() to construct.
-    private KpiQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiQuery() {
-      kpiIds_ = java.util.Collections.emptyList();
-    }
+            // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiQuery();
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiQuery(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiIds_.add(
-                  input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry));
-              break;
-            }
-            case 21: {
-
-              monitoringWindowS_ = input.readFloat();
-              break;
-            }
-            case 24: {
-
-              lastNSamples_ = input.readUInt32();
-              break;
-            }
-            case 34: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (startTimestamp_ != null) {
-                subBuilder = startTimestamp_.toBuilder();
-              }
-              startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(startTimestamp_);
-                startTimestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (endTimestamp_ != null) {
-                subBuilder = endTimestamp_.toBuilder();
-              }
-              endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endTimestamp_);
-                endTimestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                alarmDescription_ = "";
+                name_ = "";
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
+                    kpiValueRangeBuilder_ = null;
+                }
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
+            }
 
-    public static final int KPI_IDS_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.KpiId> kpiIds_;
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
-      return kpiIds_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-        getKpiIdsOrBuilderList() {
-      return kpiIds_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public int getKpiIdsCount() {
-      return kpiIds_.size();
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiIds(int index) {
-      return kpiIds_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-        int index) {
-      return kpiIds_.get(index);
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
+                return monitoring.Monitoring.AlarmDescriptor.getDefaultInstance();
+            }
 
-    public static final int MONITORING_WINDOW_S_FIELD_NUMBER = 2;
-    private float monitoringWindowS_;
-    /**
-     * <code>float monitoring_window_s = 2;</code>
-     * @return The monitoringWindowS.
-     */
-    @java.lang.Override
-    public float getMonitoringWindowS() {
-      return monitoringWindowS_;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmDescriptor build() {
+                monitoring.Monitoring.AlarmDescriptor result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static final int LAST_N_SAMPLES_FIELD_NUMBER = 3;
-    private int lastNSamples_;
-    /**
-     * <pre>
-     * used when you want something like "get the last N many samples
-     * </pre>
-     *
-     * <code>uint32 last_n_samples = 3;</code>
-     * @return The lastNSamples.
-     */
-    @java.lang.Override
-    public int getLastNSamples() {
-      return lastNSamples_;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmDescriptor buildPartial() {
+                monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    public static final int START_TIMESTAMP_FIELD_NUMBER = 4;
-    private context.ContextOuterClass.Timestamp startTimestamp_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     * @return Whether the startTimestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasStartTimestamp() {
-      return startTimestamp_ != null;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     * @return The startTimestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getStartTimestamp() {
-      return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 4;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-      return getStartTimestamp();
-    }
+            private void buildPartial0(monitoring.Monitoring.AlarmDescriptor result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.alarmDescription_ = alarmDescription_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.name_ = name_;
+                }
+                if (((from_bitField0_ & 0x00000008) != 0)) {
+                    result.kpiId_ = kpiIdBuilder_ == null ? kpiId_ : kpiIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000010) != 0)) {
+                    result.kpiValueRange_ = kpiValueRangeBuilder_ == null ? kpiValueRange_ : kpiValueRangeBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000020) != 0)) {
+                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
+                }
+            }
 
-    public static final int END_TIMESTAMP_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.Timestamp endTimestamp_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     * @return Whether the endTimestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndTimestamp() {
-      return endTimestamp_ != null;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     * @return The endTimestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getEndTimestamp() {
-      return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-      return getEndTimestamp();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.AlarmDescriptor) {
+                    return mergeFrom((monitoring.Monitoring.AlarmDescriptor) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            public Builder mergeFrom(monitoring.Monitoring.AlarmDescriptor other) {
+                if (other == monitoring.Monitoring.AlarmDescriptor.getDefaultInstance())
+                    return this;
+                if (other.hasAlarmId()) {
+                    mergeAlarmId(other.getAlarmId());
+                }
+                if (!other.getAlarmDescription().isEmpty()) {
+                    alarmDescription_ = other.alarmDescription_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (!other.getName().isEmpty()) {
+                    name_ = other.name_;
+                    bitField0_ |= 0x00000004;
+                    onChanged();
+                }
+                if (other.hasKpiId()) {
+                    mergeKpiId(other.getKpiId());
+                }
+                if (other.hasKpiValueRange()) {
+                    mergeKpiValueRange(other.getKpiValueRange());
+                }
+                if (other.hasTimestamp()) {
+                    mergeTimestamp(other.getTimestamp());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < kpiIds_.size(); i++) {
-        output.writeMessage(1, kpiIds_.get(i));
-      }
-      if (monitoringWindowS_ != 0F) {
-        output.writeFloat(2, monitoringWindowS_);
-      }
-      if (lastNSamples_ != 0) {
-        output.writeUInt32(3, lastNSamples_);
-      }
-      if (startTimestamp_ != null) {
-        output.writeMessage(4, getStartTimestamp());
-      }
-      if (endTimestamp_ != null) {
-        output.writeMessage(5, getEndTimestamp());
-      }
-      unknownFields.writeTo(output);
-    }
+            @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(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    alarmDescription_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    name_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            case 34:
+                                {
+                                    input.readMessage(getKpiIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000008;
+                                    break;
+                                }
+                            // case 34
+                            case 42:
+                                {
+                                    input.readMessage(getKpiValueRangeFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000010;
+                                    break;
+                                }
+                            // case 42
+                            case 50:
+                                {
+                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000020;
+                                    break;
+                                }
+                            // case 50
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < kpiIds_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiIds_.get(i));
-      }
-      if (monitoringWindowS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, monitoringWindowS_);
-      }
-      if (lastNSamples_ != 0) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(3, lastNSamples_);
-      }
-      if (startTimestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getStartTimestamp());
-      }
-      if (endTimestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getEndTimestamp());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiQuery)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiQuery other = (monitoring.Monitoring.KpiQuery) obj;
-
-      if (!getKpiIdsList()
-          .equals(other.getKpiIdsList())) return false;
-      if (java.lang.Float.floatToIntBits(getMonitoringWindowS())
-          != java.lang.Float.floatToIntBits(
-              other.getMonitoringWindowS())) return false;
-      if (getLastNSamples()
-          != other.getLastNSamples()) return false;
-      if (hasStartTimestamp() != other.hasStartTimestamp()) return false;
-      if (hasStartTimestamp()) {
-        if (!getStartTimestamp()
-            .equals(other.getStartTimestamp())) return false;
-      }
-      if (hasEndTimestamp() != other.hasEndTimestamp()) return false;
-      if (hasEndTimestamp()) {
-        if (!getEndTimestamp()
-            .equals(other.getEndTimestamp())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            private monitoring.Monitoring.AlarmID alarmId_;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiIdsCount() > 0) {
-        hash = (37 * hash) + KPI_IDS_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiIdsList().hashCode();
-      }
-      hash = (37 * hash) + MONITORING_WINDOW_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getMonitoringWindowS());
-      hash = (37 * hash) + LAST_N_SAMPLES_FIELD_NUMBER;
-      hash = (53 * hash) + getLastNSamples();
-      if (hasStartTimestamp()) {
-        hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getStartTimestamp().hashCode();
-      }
-      if (hasEndTimestamp()) {
-        hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getEndTimestamp().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
 
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiQuery parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return Whether the alarmId field is set.
+             */
+            public boolean hasAlarmId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiQuery prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return The alarmId.
+             */
+            public monitoring.Monitoring.AlarmID getAlarmId() {
+                if (alarmIdBuilder_ == null) {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                } else {
+                    return alarmIdBuilder_.getMessage();
+                }
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiQuery}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiQuery)
-        monitoring.Monitoring.KpiQueryOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiQuery.class, monitoring.Monitoring.KpiQuery.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiQuery.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiIdsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdsBuilder_ == null) {
-          kpiIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          kpiIdsBuilder_.clear();
-        }
-        monitoringWindowS_ = 0F;
-
-        lastNSamples_ = 0;
-
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = null;
-        } else {
-          startTimestamp_ = null;
-          startTimestampBuilder_ = null;
-        }
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = null;
-        } else {
-          endTimestamp_ = null;
-          endTimestampBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiQuery_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiQuery.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery build() {
-        monitoring.Monitoring.KpiQuery result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiQuery buildPartial() {
-        monitoring.Monitoring.KpiQuery result = new monitoring.Monitoring.KpiQuery(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiIds_ = java.util.Collections.unmodifiableList(kpiIds_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiIds_ = kpiIds_;
-        } else {
-          result.kpiIds_ = kpiIdsBuilder_.build();
-        }
-        result.monitoringWindowS_ = monitoringWindowS_;
-        result.lastNSamples_ = lastNSamples_;
-        if (startTimestampBuilder_ == null) {
-          result.startTimestamp_ = startTimestamp_;
-        } else {
-          result.startTimestamp_ = startTimestampBuilder_.build();
-        }
-        if (endTimestampBuilder_ == null) {
-          result.endTimestamp_ = endTimestamp_;
-        } else {
-          result.endTimestamp_ = endTimestampBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiQuery) {
-          return mergeFrom((monitoring.Monitoring.KpiQuery)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiQuery other) {
-        if (other == monitoring.Monitoring.KpiQuery.getDefaultInstance()) return this;
-        if (kpiIdsBuilder_ == null) {
-          if (!other.kpiIds_.isEmpty()) {
-            if (kpiIds_.isEmpty()) {
-              kpiIds_ = other.kpiIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIdsIsMutable();
-              kpiIds_.addAll(other.kpiIds_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiIds_.isEmpty()) {
-            if (kpiIdsBuilder_.isEmpty()) {
-              kpiIdsBuilder_.dispose();
-              kpiIdsBuilder_ = null;
-              kpiIds_ = other.kpiIds_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiIdsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiIdsFieldBuilder() : null;
-            } else {
-              kpiIdsBuilder_.addAllMessages(other.kpiIds_);
-            }
-          }
-        }
-        if (other.getMonitoringWindowS() != 0F) {
-          setMonitoringWindowS(other.getMonitoringWindowS());
-        }
-        if (other.getLastNSamples() != 0) {
-          setLastNSamples(other.getLastNSamples());
-        }
-        if (other.hasStartTimestamp()) {
-          mergeStartTimestamp(other.getStartTimestamp());
-        }
-        if (other.hasEndTimestamp()) {
-          mergeEndTimestamp(other.getEndTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiQuery parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiQuery) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.KpiId> kpiIds_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIdsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiIds_ = new java.util.ArrayList<monitoring.Monitoring.KpiId>(kpiIds_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdsBuilder_;
-
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId> getKpiIdsList() {
-        if (kpiIdsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiIds_);
-        } else {
-          return kpiIdsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public int getKpiIdsCount() {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.size();
-        } else {
-          return kpiIdsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId getKpiIds(int index) {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.get(index);
-        } else {
-          return kpiIdsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder setKpiIds(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdsIsMutable();
-          kpiIds_.set(index, value);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder setKpiIds(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addKpiIds(monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(value);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addKpiIds(
-          int index, monitoring.Monitoring.KpiId value) {
-        if (kpiIdsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(index, value);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addKpiIds(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addKpiIds(
-          int index, monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder addAllKpiIds(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiId> values) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiIds_);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder clearKpiIds() {
-        if (kpiIdsBuilder_ == null) {
-          kpiIds_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public Builder removeKpiIds(int index) {
-        if (kpiIdsBuilder_ == null) {
-          ensureKpiIdsIsMutable();
-          kpiIds_.remove(index);
-          onChanged();
-        } else {
-          kpiIdsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdsBuilder(
-          int index) {
-        return getKpiIdsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdsOrBuilder(
-          int index) {
-        if (kpiIdsBuilder_ == null) {
-          return kpiIds_.get(index);  } else {
-          return kpiIdsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiIdOrBuilder> 
-           getKpiIdsOrBuilderList() {
-        if (kpiIdsBuilder_ != null) {
-          return kpiIdsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpiIds_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder() {
-        return getKpiIdsFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder addKpiIdsBuilder(
-          int index) {
-        return getKpiIdsFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiId.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiId kpi_ids = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiId.Builder> 
-           getKpiIdsBuilderList() {
-        return getKpiIdsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdsFieldBuilder() {
-        if (kpiIdsBuilder_ == null) {
-          kpiIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  kpiIds_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpiIds_ = null;
-        }
-        return kpiIdsBuilder_;
-      }
-
-      private float monitoringWindowS_ ;
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return The monitoringWindowS.
-       */
-      @java.lang.Override
-      public float getMonitoringWindowS() {
-        return monitoringWindowS_;
-      }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @param value The monitoringWindowS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setMonitoringWindowS(float value) {
-        
-        monitoringWindowS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float monitoring_window_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearMonitoringWindowS() {
-        
-        monitoringWindowS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private int lastNSamples_ ;
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 3;</code>
-       * @return The lastNSamples.
-       */
-      @java.lang.Override
-      public int getLastNSamples() {
-        return lastNSamples_;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 3;</code>
-       * @param value The lastNSamples to set.
-       * @return This builder for chaining.
-       */
-      public Builder setLastNSamples(int value) {
-        
-        lastNSamples_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the last N many samples
-       * </pre>
-       *
-       * <code>uint32 last_n_samples = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearLastNSamples() {
-        
-        lastNSamples_ = 0;
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.Timestamp startTimestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       * @return Whether the startTimestamp field is set.
-       */
-      public boolean hasStartTimestamp() {
-        return startTimestampBuilder_ != null || startTimestamp_ != null;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       * @return The startTimestamp.
-       */
-      public context.ContextOuterClass.Timestamp getStartTimestamp() {
-        if (startTimestampBuilder_ == null) {
-          return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-        } else {
-          return startTimestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (startTimestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          startTimestamp_ = value;
-          onChanged();
-        } else {
-          startTimestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public Builder setStartTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          startTimestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (startTimestampBuilder_ == null) {
-          if (startTimestamp_ != null) {
-            startTimestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
-          } else {
-            startTimestamp_ = value;
-          }
-          onChanged();
-        } else {
-          startTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public Builder clearStartTimestamp() {
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = null;
-          onChanged();
-        } else {
-          startTimestamp_ = null;
-          startTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-        
-        onChanged();
-        return getStartTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-        if (startTimestampBuilder_ != null) {
-          return startTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return startTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getStartTimestampFieldBuilder() {
-        if (startTimestampBuilder_ == null) {
-          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getStartTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          startTimestamp_ = null;
-        }
-        return startTimestampBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp endTimestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       * @return Whether the endTimestamp field is set.
-       */
-      public boolean hasEndTimestamp() {
-        return endTimestampBuilder_ != null || endTimestamp_ != null;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       * @return The endTimestamp.
-       */
-      public context.ContextOuterClass.Timestamp getEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        } else {
-          return endTimestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endTimestamp_ = value;
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder setEndTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (endTimestamp_ != null) {
-            endTimestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
-          } else {
-            endTimestamp_ = value;
-          }
-          onChanged();
-        } else {
-          endTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public Builder clearEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = null;
-          onChanged();
-        } else {
-          endTimestamp_ = null;
-          endTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-        
-        onChanged();
-        return getEndTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-        if (endTimestampBuilder_ != null) {
-          return endTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return endTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getEndTimestampFieldBuilder() {
-        if (endTimestampBuilder_ == null) {
-          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getEndTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          endTimestamp_ = null;
-        }
-        return endTimestampBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiQuery)
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    alarmId_ = value;
+                } else {
+                    alarmIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiQuery)
-    private static final monitoring.Monitoring.KpiQuery DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiQuery();
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = builderForValue.build();
+                } else {
+                    alarmIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static monitoring.Monitoring.KpiQuery getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
+                    } else {
+                        alarmId_ = value;
+                    }
+                } else {
+                    alarmIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<KpiQuery>
-        PARSER = new com.google.protobuf.AbstractParser<KpiQuery>() {
-      @java.lang.Override
-      public KpiQuery parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiQuery(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiQuery> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder clearAlarmId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiQuery> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getAlarmIdFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiQuery getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+                if (alarmIdBuilder_ != null) {
+                    return alarmIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                }
+            }
+
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> getAlarmIdFieldBuilder() {
+                if (alarmIdBuilder_ == null) {
+                    alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(getAlarmId(), getParentForChildren(), isClean());
+                    alarmId_ = null;
+                }
+                return alarmIdBuilder_;
+            }
 
-  }
+            private java.lang.Object alarmDescription_ = "";
+
+            /**
+             * <code>string alarm_description = 2;</code>
+             * @return The alarmDescription.
+             */
+            public java.lang.String getAlarmDescription() {
+                java.lang.Object ref = alarmDescription_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    alarmDescription_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-  public interface RawKpiOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpi)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>string alarm_description = 2;</code>
+             * @return The bytes for alarmDescription.
+             */
+            public com.google.protobuf.ByteString getAlarmDescriptionBytes() {
+                java.lang.Object ref = alarmDescription_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    alarmDescription_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+            /**
+             * <code>string alarm_description = 2;</code>
+             * @param value The alarmDescription to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAlarmDescription(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    boolean hasKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return The kpiValue.
-     */
-    monitoring.Monitoring.KpiValue getKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
-  }
-  /**
-   * <pre>
-   * cell
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpi}
-   */
-  public static final class RawKpi extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpi)
-      RawKpiOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpi.newBuilder() to construct.
-    private RawKpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpi() {
-    }
+            /**
+             * <code>string alarm_description = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearAlarmDescription() {
+                alarmDescription_ = getDefaultInstance().getAlarmDescription();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpi();
-    }
+            /**
+             * <code>string alarm_description = 2;</code>
+             * @param value The bytes for alarmDescription to set.
+             * @return This builder for chaining.
+             */
+            public Builder setAlarmDescriptionBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                alarmDescription_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpi(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiValue_ != null) {
-                subBuilder = kpiValue_.toBuilder();
-              }
-              kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValue_);
-                kpiValue_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-    }
+            private java.lang.Object name_ = "";
+
+            /**
+             * <code>string name = 3;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 3;</code>
+             * @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;
+                }
+            }
+
+            /**
+             * <code>string name = 3;</code>
+             * @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_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearName() {
+                name_ = getDefaultInstance().getName();
+                bitField0_ = (bitField0_ & ~0x00000004);
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>string name = 3;</code>
+             * @param value The bytes for name to set.
+             * @return This builder for chaining.
+             */
+            public Builder setNameBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                name_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class);
-    }
+            private monitoring.Monitoring.KpiId kpiId_;
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
 
-    public static final int KPI_VALUE_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiValue kpiValue_;
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiValue() {
-      return kpiValue_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     * @return The kpiValue.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiValue() {
-      return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-      return getKpiValue();
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             * @return Whether the kpiId field is set.
+             */
+            public boolean hasKpiId() {
+                return ((bitField0_ & 0x00000008) != 0);
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             * @return The kpiId.
+             */
+            public monitoring.Monitoring.KpiId getKpiId() {
+                if (kpiIdBuilder_ == null) {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                } else {
+                    return kpiIdBuilder_.getMessage();
+                }
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiId_ = value;
+                } else {
+                    kpiIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (timestamp_ != null) {
-        output.writeMessage(1, getTimestamp());
-      }
-      if (kpiValue_ != null) {
-        output.writeMessage(2, getKpiValue());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public Builder setKpiId(monitoring.Monitoring.KpiId.Builder builderForValue) {
+                if (kpiIdBuilder_ == null) {
+                    kpiId_ = builderForValue.build();
+                } else {
+                    kpiIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getTimestamp());
-      }
-      if (kpiValue_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiValue());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
+                if (kpiIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000008) != 0) && kpiId_ != null && kpiId_ != monitoring.Monitoring.KpiId.getDefaultInstance()) {
+                        getKpiIdBuilder().mergeFrom(value);
+                    } else {
+                        kpiId_ = value;
+                    }
+                } else {
+                    kpiIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpi)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpi other = (monitoring.Monitoring.RawKpi) obj;
-
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (hasKpiValue() != other.hasKpiValue()) return false;
-      if (hasKpiValue()) {
-        if (!getKpiValue()
-            .equals(other.getKpiValue())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public Builder clearKpiId() {
+                bitField0_ = (bitField0_ & ~0x00000008);
+                kpiId_ = null;
+                if (kpiIdBuilder_ != null) {
+                    kpiIdBuilder_.dispose();
+                    kpiIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      if (hasKpiValue()) {
-        hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValue().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
+                bitField0_ |= 0x00000008;
+                onChanged();
+                return getKpiIdFieldBuilder().getBuilder();
+            }
 
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpi parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
+                if (kpiIdBuilder_ != null) {
+                    return kpiIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.RawKpi prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.monitoring.KpiId kpi_id = 4;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> getKpiIdFieldBuilder() {
+                if (kpiIdBuilder_ == null) {
+                    kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(getKpiId(), getParentForChildren(), isClean());
+                    kpiId_ = null;
+                }
+                return kpiIdBuilder_;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * cell
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpi}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpi)
-        monitoring.Monitoring.RawKpiOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpi.class, monitoring.Monitoring.RawKpi.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpi.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpi_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpi.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi build() {
-        monitoring.Monitoring.RawKpi result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpi buildPartial() {
-        monitoring.Monitoring.RawKpi result = new monitoring.Monitoring.RawKpi(this);
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        if (kpiValueBuilder_ == null) {
-          result.kpiValue_ = kpiValue_;
-        } else {
-          result.kpiValue_ = kpiValueBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpi) {
-          return mergeFrom((monitoring.Monitoring.RawKpi)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpi other) {
-        if (other == monitoring.Monitoring.RawKpi.getDefaultInstance()) return this;
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        if (other.hasKpiValue()) {
-          mergeKpiValue(other.getKpiValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.RawKpi parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpi) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiValue kpiValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       * @return Whether the kpiValue field is set.
-       */
-      public boolean hasKpiValue() {
-        return kpiValueBuilder_ != null || kpiValue_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       * @return The kpiValue.
-       */
-      public monitoring.Monitoring.KpiValue getKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        } else {
-          return kpiValueBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiValue_ = value;
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder setKpiValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (kpiValue_ != null) {
-            kpiValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiValue_ = value;
-          }
-          onChanged();
-        } else {
-          kpiValueBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public Builder clearKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-          onChanged();
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-        
-        onChanged();
-        return getKpiValueFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-        if (kpiValueBuilder_ != null) {
-          return kpiValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiValueFieldBuilder() {
-        if (kpiValueBuilder_ == null) {
-          kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiValue_ = null;
-        }
-        return kpiValueBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.RawKpi)
-    }
+            private monitoring.Monitoring.KpiValueRange kpiValueRange_;
 
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpi)
-    private static final monitoring.Monitoring.RawKpi DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpi();
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_;
 
-    public static monitoring.Monitoring.RawKpi getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             * @return Whether the kpiValueRange field is set.
+             */
+            public boolean hasKpiValueRange() {
+                return ((bitField0_ & 0x00000010) != 0);
+            }
 
-    private static final com.google.protobuf.Parser<RawKpi>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpi>() {
-      @java.lang.Override
-      public RawKpi parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpi(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<RawKpi> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             * @return The kpiValueRange.
+             */
+            public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
+                if (kpiValueRangeBuilder_ == null) {
+                    return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+                } else {
+                    return kpiValueRangeBuilder_.getMessage();
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<RawKpi> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
+                if (kpiValueRangeBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiValueRange_ = value;
+                } else {
+                    kpiValueRangeBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpi getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRange_ = builderForValue.build();
+                } else {
+                    kpiValueRangeBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
 
-  }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
+                if (kpiValueRangeBuilder_ == null) {
+                    if (((bitField0_ & 0x00000010) != 0) && kpiValueRange_ != null && kpiValueRange_ != monitoring.Monitoring.KpiValueRange.getDefaultInstance()) {
+                        getKpiValueRangeBuilder().mergeFrom(value);
+                    } else {
+                        kpiValueRange_ = value;
+                    }
+                } else {
+                    kpiValueRangeBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return this;
+            }
 
-  public interface RawKpiListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpiList)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public Builder clearKpiValueRange() {
+                bitField0_ = (bitField0_ & ~0x00000010);
+                kpiValueRange_ = null;
+                if (kpiValueRangeBuilder_ != null) {
+                    kpiValueRangeBuilder_.dispose();
+                    kpiValueRangeBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
+                bitField0_ |= 0x00000010;
+                onChanged();
+                return getKpiValueRangeFieldBuilder().getBuilder();
+            }
 
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    java.util.List<monitoring.Monitoring.RawKpi> 
-        getRawKpisList();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    monitoring.Monitoring.RawKpi getRawKpis(int index);
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    int getRawKpisCount();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-        getRawKpisOrBuilderList();
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-        int index);
-  }
-  /**
-   * <pre>
-   * column
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpiList}
-   */
-  public static final class RawKpiList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpiList)
-      RawKpiListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpiList.newBuilder() to construct.
-    private RawKpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpiList() {
-      rawKpis_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
+                if (kpiValueRangeBuilder_ != null) {
+                    return kpiValueRangeBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
+                }
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpiList();
-    }
+            /**
+             * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> getKpiValueRangeFieldBuilder() {
+                if (kpiValueRangeBuilder_ == null) {
+                    kpiValueRangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder>(getKpiValueRange(), getParentForChildren(), isClean());
+                    kpiValueRange_ = null;
+                }
+                return kpiValueRangeBuilder_;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpiList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              rawKpis_.add(
-                  input.readMessage(monitoring.Monitoring.RawKpi.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-    }
+            private context.ContextOuterClass.Timestamp timestamp_;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             * @return Whether the timestamp field is set.
+             */
+            public boolean hasTimestamp() {
+                return ((bitField0_ & 0x00000020) != 0);
+            }
 
-    public static final int RAW_KPIS_FIELD_NUMBER = 2;
-    private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_;
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
-      return rawKpis_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-        getRawKpisOrBuilderList() {
-      return rawKpis_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public int getRawKpisCount() {
-      return rawKpis_.size();
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpi getRawKpis(int index) {
-      return rawKpis_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-        int index) {
-      return rawKpis_.get(index);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             * @return The timestamp.
+             */
+            public context.ContextOuterClass.Timestamp getTimestamp() {
+                if (timestampBuilder_ == null) {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                } else {
+                    return timestampBuilder_.getMessage();
+                }
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    timestamp_ = value;
+                } else {
+                    timestampBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
+                if (timestampBuilder_ == null) {
+                    timestamp_ = builderForValue.build();
+                } else {
+                    timestampBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      for (int i = 0; i < rawKpis_.size(); i++) {
-        output.writeMessage(2, rawKpis_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
+                if (timestampBuilder_ == null) {
+                    if (((bitField0_ & 0x00000020) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
+                        getTimestampBuilder().mergeFrom(value);
+                    } else {
+                        timestamp_ = value;
+                    }
+                } else {
+                    timestampBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      for (int i = 0; i < rawKpis_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, rawKpis_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public Builder clearTimestamp() {
+                bitField0_ = (bitField0_ & ~0x00000020);
+                timestamp_ = null;
+                if (timestampBuilder_ != null) {
+                    timestampBuilder_.dispose();
+                    timestampBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpiList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpiList other = (monitoring.Monitoring.RawKpiList) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (!getRawKpisList()
-          .equals(other.getRawKpisList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
+                bitField0_ |= 0x00000020;
+                onChanged();
+                return getTimestampFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      if (getRawKpisCount() > 0) {
-        hash = (37 * hash) + RAW_KPIS_FIELD_NUMBER;
-        hash = (53 * hash) + getRawKpisList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
+                if (timestampBuilder_ != null) {
+                    return timestampBuilder_.getMessageOrBuilder();
+                } else {
+                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
+                }
+            }
 
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Timestamp timestamp = 6;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
+                if (timestampBuilder_ == null) {
+                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
+                    timestamp_ = null;
+                }
+                return timestampBuilder_;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.RawKpiList 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
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * column
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpiList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpiList)
-        monitoring.Monitoring.RawKpiListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpiList.class, monitoring.Monitoring.RawKpiList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpiList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getRawKpisFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        if (rawKpisBuilder_ == null) {
-          rawKpis_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          rawKpisBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpiList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList build() {
-        monitoring.Monitoring.RawKpiList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiList buildPartial() {
-        monitoring.Monitoring.RawKpiList result = new monitoring.Monitoring.RawKpiList(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        if (rawKpisBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            rawKpis_ = java.util.Collections.unmodifiableList(rawKpis_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.rawKpis_ = rawKpis_;
-        } else {
-          result.rawKpis_ = rawKpisBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpiList) {
-          return mergeFrom((monitoring.Monitoring.RawKpiList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpiList other) {
-        if (other == monitoring.Monitoring.RawKpiList.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (rawKpisBuilder_ == null) {
-          if (!other.rawKpis_.isEmpty()) {
-            if (rawKpis_.isEmpty()) {
-              rawKpis_ = other.rawKpis_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureRawKpisIsMutable();
-              rawKpis_.addAll(other.rawKpis_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rawKpis_.isEmpty()) {
-            if (rawKpisBuilder_.isEmpty()) {
-              rawKpisBuilder_.dispose();
-              rawKpisBuilder_ = null;
-              rawKpis_ = other.rawKpis_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              rawKpisBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getRawKpisFieldBuilder() : null;
-            } else {
-              rawKpisBuilder_.addAllMessages(other.rawKpis_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.RawKpiList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpiList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private java.util.List<monitoring.Monitoring.RawKpi> rawKpis_ =
-        java.util.Collections.emptyList();
-      private void ensureRawKpisIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          rawKpis_ = new java.util.ArrayList<monitoring.Monitoring.RawKpi>(rawKpis_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> rawKpisBuilder_;
-
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpi> getRawKpisList() {
-        if (rawKpisBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rawKpis_);
-        } else {
-          return rawKpisBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public int getRawKpisCount() {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.size();
-        } else {
-          return rawKpisBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi getRawKpis(int index) {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.get(index);
-        } else {
-          return rawKpisBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder setRawKpis(
-          int index, monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.set(index, value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder setRawKpis(
-          int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.add(value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          int index, monitoring.Monitoring.RawKpi value) {
-        if (rawKpisBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpisIsMutable();
-          rawKpis_.add(index, value);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addRawKpis(
-          int index, monitoring.Monitoring.RawKpi.Builder builderForValue) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpisBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder addAllRawKpis(
-          java.lang.Iterable<? extends monitoring.Monitoring.RawKpi> values) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rawKpis_);
-          onChanged();
-        } else {
-          rawKpisBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder clearRawKpis() {
-        if (rawKpisBuilder_ == null) {
-          rawKpis_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          rawKpisBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public Builder removeRawKpis(int index) {
-        if (rawKpisBuilder_ == null) {
-          ensureRawKpisIsMutable();
-          rawKpis_.remove(index);
-          onChanged();
-        } else {
-          rawKpisBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder getRawKpisBuilder(
-          int index) {
-        return getRawKpisFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpiOrBuilder getRawKpisOrBuilder(
-          int index) {
-        if (rawKpisBuilder_ == null) {
-          return rawKpis_.get(index);  } else {
-          return rawKpisBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.RawKpiOrBuilder> 
-           getRawKpisOrBuilderList() {
-        if (rawKpisBuilder_ != null) {
-          return rawKpisBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(rawKpis_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder() {
-        return getRawKpisFieldBuilder().addBuilder(
-            monitoring.Monitoring.RawKpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public monitoring.Monitoring.RawKpi.Builder addRawKpisBuilder(
-          int index) {
-        return getRawKpisFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.RawKpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpi raw_kpis = 2;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpi.Builder> 
-           getRawKpisBuilderList() {
-        return getRawKpisFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder> 
-          getRawKpisFieldBuilder() {
-        if (rawKpisBuilder_ == null) {
-          rawKpisBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.RawKpi, monitoring.Monitoring.RawKpi.Builder, monitoring.Monitoring.RawKpiOrBuilder>(
-                  rawKpis_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          rawKpis_ = null;
-        }
-        return rawKpisBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.RawKpiList)
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.AlarmDescriptor)
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpiList)
-    private static final monitoring.Monitoring.RawKpiList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiList();
-    }
+        // @@protoc_insertion_point(class_scope:monitoring.AlarmDescriptor)
+        private static final monitoring.Monitoring.AlarmDescriptor DEFAULT_INSTANCE;
 
-    public static monitoring.Monitoring.RawKpiList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmDescriptor();
+        }
 
-    private static final com.google.protobuf.Parser<RawKpiList>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpiList>() {
-      @java.lang.Override
-      public RawKpiList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpiList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<RawKpiList> parser() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmDescriptor getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<RawKpiList> getParserForType() {
-      return PARSER;
-    }
+        private static final com.google.protobuf.Parser<AlarmDescriptor> PARSER = new com.google.protobuf.AbstractParser<AlarmDescriptor>() {
 
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public AlarmDescriptor 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<AlarmDescriptor> parser() {
+            return PARSER;
+        }
 
-  public interface RawKpiTableOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.RawKpiTable)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public com.google.protobuf.Parser<AlarmDescriptor> getParserForType() {
+            return PARSER;
+        }
 
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.RawKpiList> 
-        getRawKpiListsList();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    monitoring.Monitoring.RawKpiList getRawKpiLists(int index);
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    int getRawKpiListsCount();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-        getRawKpiListsOrBuilderList();
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-        int index);
-  }
-  /**
-   * <pre>
-   * table
-   * </pre>
-   *
-   * Protobuf type {@code monitoring.RawKpiTable}
-   */
-  public static final class RawKpiTable extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.RawKpiTable)
-      RawKpiTableOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use RawKpiTable.newBuilder() to construct.
-    private RawKpiTable(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private RawKpiTable() {
-      rawKpiLists_ = java.util.Collections.emptyList();
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new RawKpiTable();
-    }
+    public interface AlarmIDOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.AlarmID)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private RawKpiTable(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              rawKpiLists_.add(
-                  input.readMessage(monitoring.Monitoring.RawKpiList.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-    }
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        boolean hasAlarmId();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
-    }
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        context.ContextOuterClass.Uuid getAlarmId();
 
-    public static final int RAW_KPI_LISTS_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_;
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
-      return rawKpiLists_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-        getRawKpiListsOrBuilderList() {
-      return rawKpiLists_;
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public int getRawKpiListsCount() {
-      return rawKpiLists_.size();
-    }
-    /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
-      return rawKpiLists_.get(index);
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder();
     }
+
     /**
-     * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
+     * Protobuf type {@code monitoring.AlarmID}
      */
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-        int index) {
-      return rawKpiLists_.get(index);
-    }
+    public static final class AlarmID extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.AlarmID)
+    AlarmIDOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use AlarmID.newBuilder() to construct.
+        private AlarmID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < rawKpiLists_.size(); i++) {
-        output.writeMessage(1, rawKpiLists_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        private AlarmID() {
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < rawKpiLists_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, rawKpiLists_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AlarmID();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.RawKpiTable)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.RawKpiTable other = (monitoring.Monitoring.RawKpiTable) obj;
-
-      if (!getRawKpiListsList()
-          .equals(other.getRawKpiListsList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getRawKpiListsCount() > 0) {
-        hash = (37 * hash) + RAW_KPI_LISTS_FIELD_NUMBER;
-        hash = (53 * hash) + getRawKpiListsList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
+        }
 
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.RawKpiTable parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int ALARM_ID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.RawKpiTable prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private context.ContextOuterClass.Uuid alarmId_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * <pre>
-     * table
-     * </pre>
-     *
-     * Protobuf type {@code monitoring.RawKpiTable}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.RawKpiTable)
-        monitoring.Monitoring.RawKpiTableOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.RawKpiTable.class, monitoring.Monitoring.RawKpiTable.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.RawKpiTable.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getRawKpiListsFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiLists_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          rawKpiListsBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_RawKpiTable_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
-        return monitoring.Monitoring.RawKpiTable.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable build() {
-        monitoring.Monitoring.RawKpiTable result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.RawKpiTable buildPartial() {
-        monitoring.Monitoring.RawKpiTable result = new monitoring.Monitoring.RawKpiTable(this);
-        int from_bitField0_ = bitField0_;
-        if (rawKpiListsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            rawKpiLists_ = java.util.Collections.unmodifiableList(rawKpiLists_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.rawKpiLists_ = rawKpiLists_;
-        } else {
-          result.rawKpiLists_ = rawKpiListsBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.RawKpiTable) {
-          return mergeFrom((monitoring.Monitoring.RawKpiTable)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.RawKpiTable other) {
-        if (other == monitoring.Monitoring.RawKpiTable.getDefaultInstance()) return this;
-        if (rawKpiListsBuilder_ == null) {
-          if (!other.rawKpiLists_.isEmpty()) {
-            if (rawKpiLists_.isEmpty()) {
-              rawKpiLists_ = other.rawKpiLists_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureRawKpiListsIsMutable();
-              rawKpiLists_.addAll(other.rawKpiLists_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.rawKpiLists_.isEmpty()) {
-            if (rawKpiListsBuilder_.isEmpty()) {
-              rawKpiListsBuilder_.dispose();
-              rawKpiListsBuilder_ = null;
-              rawKpiLists_ = other.rawKpiLists_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              rawKpiListsBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getRawKpiListsFieldBuilder() : null;
-            } else {
-              rawKpiListsBuilder_.addAllMessages(other.rawKpiLists_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.RawKpiTable parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.RawKpiTable) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.RawKpiList> rawKpiLists_ =
-        java.util.Collections.emptyList();
-      private void ensureRawKpiListsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          rawKpiLists_ = new java.util.ArrayList<monitoring.Monitoring.RawKpiList>(rawKpiLists_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> rawKpiListsBuilder_;
-
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpiList> getRawKpiListsList() {
-        if (rawKpiListsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(rawKpiLists_);
-        } else {
-          return rawKpiListsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public int getRawKpiListsCount() {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.size();
-        } else {
-          return rawKpiListsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList getRawKpiLists(int index) {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.get(index);
-        } else {
-          return rawKpiListsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder setRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.set(index, value);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder setRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(value);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList value) {
-        if (rawKpiListsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(index, value);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(
-          monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(builderForValue.build());
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addRawKpiLists(
-          int index, monitoring.Monitoring.RawKpiList.Builder builderForValue) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder addAllRawKpiLists(
-          java.lang.Iterable<? extends monitoring.Monitoring.RawKpiList> values) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, rawKpiLists_);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder clearRawKpiLists() {
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiLists_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public Builder removeRawKpiLists(int index) {
-        if (rawKpiListsBuilder_ == null) {
-          ensureRawKpiListsIsMutable();
-          rawKpiLists_.remove(index);
-          onChanged();
-        } else {
-          rawKpiListsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder getRawKpiListsBuilder(
-          int index) {
-        return getRawKpiListsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiListOrBuilder getRawKpiListsOrBuilder(
-          int index) {
-        if (rawKpiListsBuilder_ == null) {
-          return rawKpiLists_.get(index);  } else {
-          return rawKpiListsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.RawKpiListOrBuilder> 
-           getRawKpiListsOrBuilderList() {
-        if (rawKpiListsBuilder_ != null) {
-          return rawKpiListsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(rawKpiLists_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder() {
-        return getRawKpiListsFieldBuilder().addBuilder(
-            monitoring.Monitoring.RawKpiList.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public monitoring.Monitoring.RawKpiList.Builder addRawKpiListsBuilder(
-          int index) {
-        return getRawKpiListsFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.RawKpiList.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.RawKpiList raw_kpi_lists = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.RawKpiList.Builder> 
-           getRawKpiListsBuilderList() {
-        return getRawKpiListsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder> 
-          getRawKpiListsFieldBuilder() {
-        if (rawKpiListsBuilder_ == null) {
-          rawKpiListsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.RawKpiList, monitoring.Monitoring.RawKpiList.Builder, monitoring.Monitoring.RawKpiListOrBuilder>(
-                  rawKpiLists_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          rawKpiLists_ = null;
-        }
-        return rawKpiListsBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.RawKpiTable)
-    }
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        @java.lang.Override
+        public boolean hasAlarmId() {
+            return alarmId_ != null;
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.RawKpiTable)
-    private static final monitoring.Monitoring.RawKpiTable DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.RawKpiTable();
-    }
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getAlarmId() {
+            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+        }
 
-    public static monitoring.Monitoring.RawKpiTable getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.context.Uuid alarm_id = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
+            return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+        }
 
-    private static final com.google.protobuf.Parser<RawKpiTable>
-        PARSER = new com.google.protobuf.AbstractParser<RawKpiTable>() {
-      @java.lang.Override
-      public RawKpiTable parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new RawKpiTable(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<RawKpiTable> parser() {
-      return PARSER;
-    }
+        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 (alarmId_ != null) {
+                output.writeMessage(1, getAlarmId());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<RawKpiTable> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (alarmId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.RawKpiTable getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof monitoring.Monitoring.AlarmID)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.AlarmID other = (monitoring.Monitoring.AlarmID) obj;
+            if (hasAlarmId() != other.hasAlarmId())
+                return false;
+            if (hasAlarmId()) {
+                if (!getAlarmId().equals(other.getAlarmId()))
+                    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 (hasAlarmId()) {
+                hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getAlarmId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-  public interface KpiIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiId)
-      com.google.protobuf.MessageOrBuilder {
+        public static monitoring.Monitoring.AlarmID parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    context.ContextOuterClass.Uuid getKpiId();
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiId}
-   */
-  public static final class KpiId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiId)
-      KpiIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiId.newBuilder() to construct.
-    private KpiId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiId() {
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiId();
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid kpiId_;
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getKpiId() {
-      return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.context.Uuid kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static monitoring.Monitoring.AlarmID parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      unknownFields.writeTo(output);
-    }
+        public static monitoring.Monitoring.AlarmID parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static monitoring.Monitoring.AlarmID parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiId)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiId other = (monitoring.Monitoring.KpiId) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static monitoring.Monitoring.AlarmID parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static monitoring.Monitoring.KpiId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiId}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiId)
-        monitoring.Monitoring.KpiIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiId.class, monitoring.Monitoring.KpiId.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiId_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiId build() {
-        monitoring.Monitoring.KpiId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiId buildPartial() {
-        monitoring.Monitoring.KpiId result = new monitoring.Monitoring.KpiId(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiId) {
-          return mergeFrom((monitoring.Monitoring.KpiId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiId other) {
-        if (other == monitoring.Monitoring.KpiId.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public context.ContextOuterClass.Uuid getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public Builder setKpiId(context.ContextOuterClass.Uuid value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(context.ContextOuterClass.Uuid value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              context.ContextOuterClass.Uuid.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.context.Uuid kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiId)
-    }
+        public static Builder newBuilder(monitoring.Monitoring.AlarmID prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiId)
-    private static final monitoring.Monitoring.KpiId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiId();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    public static monitoring.Monitoring.KpiId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    private static final com.google.protobuf.Parser<KpiId>
-        PARSER = new com.google.protobuf.AbstractParser<KpiId>() {
-      @java.lang.Override
-      public KpiId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiId> parser() {
-      return PARSER;
-    }
+        /**
+         * Protobuf type {@code monitoring.AlarmID}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.AlarmID)
+        monitoring.Monitoring.AlarmIDOrBuilder {
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiId> getParserForType() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
+            }
 
-  }
+            // Construct using monitoring.Monitoring.AlarmID.newBuilder()
+            private Builder() {
+            }
 
-  public interface KpiOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.Kpi)
-      com.google.protobuf.MessageOrBuilder {
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                return this;
+            }
 
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
+            }
 
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    boolean hasKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return The kpiValue.
-     */
-    monitoring.Monitoring.KpiValue getKpiValue();
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.Kpi}
-   */
-  public static final class Kpi extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.Kpi)
-      KpiOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use Kpi.newBuilder() to construct.
-    private Kpi(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private Kpi() {
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
+                return monitoring.Monitoring.AlarmID.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new Kpi();
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmID build() {
+                monitoring.Monitoring.AlarmID result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private Kpi(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 26: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiValue_ != null) {
-                subBuilder = kpiValue_.toBuilder();
-              }
-              kpiValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValue_);
-                kpiValue_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmID buildPartial() {
+                monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
-    }
+            private void buildPartial0(monitoring.Monitoring.AlarmID result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+            }
 
-    public static final int KPI_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.AlarmID) {
+                    return mergeFrom((monitoring.Monitoring.AlarmID) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+            public Builder mergeFrom(monitoring.Monitoring.AlarmID other) {
+                if (other == monitoring.Monitoring.AlarmID.getDefaultInstance())
+                    return this;
+                if (other.hasAlarmId()) {
+                    mergeAlarmId(other.getAlarmId());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    public static final int KPI_VALUE_FIELD_NUMBER = 3;
-    private monitoring.Monitoring.KpiValue kpiValue_;
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return Whether the kpiValue field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiValue() {
-      return kpiValue_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     * @return The kpiValue.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiValue() {
-      return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpi_value = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-      return getKpiValue();
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @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(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiId_ != null) {
-        output.writeMessage(1, getKpiId());
-      }
-      if (timestamp_ != null) {
-        output.writeMessage(2, getTimestamp());
-      }
-      if (kpiValue_ != null) {
-        output.writeMessage(3, getKpiValue());
-      }
-      unknownFields.writeTo(output);
-    }
+            private context.ContextOuterClass.Uuid alarmId_;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiId());
-      }
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getTimestamp());
-      }
-      if (kpiValue_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getKpiValue());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.Kpi)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.Kpi other = (monitoring.Monitoring.Kpi) obj;
-
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (hasKpiValue() != other.hasKpiValue()) return false;
-      if (hasKpiValue()) {
-        if (!getKpiValue()
-            .equals(other.getKpiValue())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             * @return Whether the alarmId field is set.
+             */
+            public boolean hasAlarmId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      if (hasKpiValue()) {
-        hash = (37 * hash) + KPI_VALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValue().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             * @return The alarmId.
+             */
+            public context.ContextOuterClass.Uuid getAlarmId() {
+                if (alarmIdBuilder_ == null) {
+                    return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+                } else {
+                    return alarmIdBuilder_.getMessage();
+                }
+            }
 
-    public static monitoring.Monitoring.Kpi parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.Kpi parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.Kpi parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.Kpi parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(context.ContextOuterClass.Uuid value) {
+                if (alarmIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    alarmId_ = value;
+                } else {
+                    alarmIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.Kpi prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = builderForValue.build();
+                } else {
+                    alarmIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.Kpi}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.Kpi)
-        monitoring.Monitoring.KpiOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.Kpi.class, monitoring.Monitoring.Kpi.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.Kpi.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_Kpi_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
-        return monitoring.Monitoring.Kpi.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.Kpi build() {
-        monitoring.Monitoring.Kpi result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.Kpi buildPartial() {
-        monitoring.Monitoring.Kpi result = new monitoring.Monitoring.Kpi(this);
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        if (kpiValueBuilder_ == null) {
-          result.kpiValue_ = kpiValue_;
-        } else {
-          result.kpiValue_ = kpiValueBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.Kpi) {
-          return mergeFrom((monitoring.Monitoring.Kpi)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.Kpi other) {
-        if (other == monitoring.Monitoring.Kpi.getDefaultInstance()) return this;
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        if (other.hasKpiValue()) {
-          mergeKpiValue(other.getKpiValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.Kpi parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.Kpi) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiValue kpiValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiValueBuilder_;
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       * @return Whether the kpiValue field is set.
-       */
-      public boolean hasKpiValue() {
-        return kpiValueBuilder_ != null || kpiValue_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       * @return The kpiValue.
-       */
-      public monitoring.Monitoring.KpiValue getKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          return kpiValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        } else {
-          return kpiValueBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public Builder setKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiValue_ = value;
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public Builder setKpiValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiValueBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public Builder mergeKpiValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiValueBuilder_ == null) {
-          if (kpiValue_ != null) {
-            kpiValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiValue_ = value;
-          }
-          onChanged();
-        } else {
-          kpiValueBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public Builder clearKpiValue() {
-        if (kpiValueBuilder_ == null) {
-          kpiValue_ = null;
-          onChanged();
-        } else {
-          kpiValue_ = null;
-          kpiValueBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public monitoring.Monitoring.KpiValue.Builder getKpiValueBuilder() {
-        
-        onChanged();
-        return getKpiValueFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiValueOrBuilder() {
-        if (kpiValueBuilder_ != null) {
-          return kpiValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiValue_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpi_value = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiValueFieldBuilder() {
-        if (kpiValueBuilder_ == null) {
-          kpiValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiValue_ = null;
-        }
-        return kpiValueBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.Kpi)
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
+                if (alarmIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
+                    } else {
+                        alarmId_ = value;
+                    }
+                } else {
+                    alarmIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.Kpi)
-    private static final monitoring.Monitoring.Kpi DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.Kpi();
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public Builder clearAlarmId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    public static monitoring.Monitoring.Kpi getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getAlarmIdFieldBuilder().getBuilder();
+            }
 
-    private static final com.google.protobuf.Parser<Kpi>
-        PARSER = new com.google.protobuf.AbstractParser<Kpi>() {
-      @java.lang.Override
-      public Kpi parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new Kpi(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<Kpi> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
+                if (alarmIdBuilder_ != null) {
+                    return alarmIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<Kpi> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.context.Uuid alarm_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getAlarmIdFieldBuilder() {
+                if (alarmIdBuilder_ == null) {
+                    alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getAlarmId(), getParentForChildren(), isClean());
+                    alarmId_ = null;
+                }
+                return alarmIdBuilder_;
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.Kpi getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.AlarmID)
+        }
 
-  public interface KpiValueRangeOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiValueRange)
-      com.google.protobuf.MessageOrBuilder {
+        // @@protoc_insertion_point(class_scope:monitoring.AlarmID)
+        private static final monitoring.Monitoring.AlarmID DEFAULT_INSTANCE;
 
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return Whether the kpiMinValue field is set.
-     */
-    boolean hasKpiMinValue();
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return The kpiMinValue.
-     */
-    monitoring.Monitoring.KpiValue getKpiMinValue();
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder();
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmID();
+        }
 
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return Whether the kpiMaxValue field is set.
-     */
-    boolean hasKpiMaxValue();
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return The kpiMaxValue.
-     */
-    monitoring.Monitoring.KpiValue getKpiMaxValue();
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     */
-    monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder();
+        public static monitoring.Monitoring.AlarmID getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    /**
-     * <pre>
-     * by default True
-     * </pre>
-     *
-     * <code>bool inRange = 3;</code>
-     * @return The inRange.
-     */
-    boolean getInRange();
+        private static final com.google.protobuf.Parser<AlarmID> PARSER = new com.google.protobuf.AbstractParser<AlarmID>() {
 
-    /**
-     * <pre>
-     * False is outside the interval
-     * </pre>
-     *
-     * <code>bool includeMinValue = 4;</code>
-     * @return The includeMinValue.
-     */
-    boolean getIncludeMinValue();
+            @java.lang.Override
+            public AlarmID 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();
+            }
+        };
 
-    /**
-     * <pre>
-     * False is outside the interval
-     * </pre>
-     *
-     * <code>bool includeMaxValue = 5;</code>
-     * @return The includeMaxValue.
-     */
-    boolean getIncludeMaxValue();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiValueRange}
-   */
-  public static final class KpiValueRange extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiValueRange)
-      KpiValueRangeOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiValueRange.newBuilder() to construct.
-    private KpiValueRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiValueRange() {
-    }
+        public static com.google.protobuf.Parser<AlarmID> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiValueRange();
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<AlarmID> getParserForType() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiValueRange(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiMinValue_ != null) {
-                subBuilder = kpiMinValue_.toBuilder();
-              }
-              kpiMinValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiMinValue_);
-                kpiMinValue_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiValue.Builder subBuilder = null;
-              if (kpiMaxValue_ != null) {
-                subBuilder = kpiMaxValue_.toBuilder();
-              }
-              kpiMaxValue_ = input.readMessage(monitoring.Monitoring.KpiValue.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiMaxValue_);
-                kpiMaxValue_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 24: {
-
-              inRange_ = input.readBool();
-              break;
-            }
-            case 32: {
-
-              includeMinValue_ = input.readBool();
-              break;
-            }
-            case 40: {
-
-              includeMaxValue_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
-    }
+    public interface AlarmSubscriptionOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.AlarmSubscription)
+    com.google.protobuf.MessageOrBuilder {
 
-    public static final int KPIMINVALUE_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.KpiValue kpiMinValue_;
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return Whether the kpiMinValue field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiMinValue() {
-      return kpiMinValue_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     * @return The kpiMinValue.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiMinValue() {
-      return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-      return getKpiMinValue();
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        boolean hasAlarmId();
 
-    public static final int KPIMAXVALUE_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiValue kpiMaxValue_;
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return Whether the kpiMaxValue field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiMaxValue() {
-      return kpiMaxValue_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     * @return The kpiMaxValue.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getKpiMaxValue() {
-      return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
-    }
-    /**
-     * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-      return getKpiMaxValue();
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        monitoring.Monitoring.AlarmID getAlarmId();
 
-    public static final int INRANGE_FIELD_NUMBER = 3;
-    private boolean inRange_;
-    /**
-     * <pre>
-     * by default True
-     * </pre>
-     *
-     * <code>bool inRange = 3;</code>
-     * @return The inRange.
-     */
-    @java.lang.Override
-    public boolean getInRange() {
-      return inRange_;
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
 
-    public static final int INCLUDEMINVALUE_FIELD_NUMBER = 4;
-    private boolean includeMinValue_;
-    /**
-     * <pre>
-     * False is outside the interval
-     * </pre>
-     *
-     * <code>bool includeMinValue = 4;</code>
-     * @return The includeMinValue.
-     */
-    @java.lang.Override
-    public boolean getIncludeMinValue() {
-      return includeMinValue_;
+        /**
+         * <code>float subscription_timeout_s = 2;</code>
+         * @return The subscriptionTimeoutS.
+         */
+        float getSubscriptionTimeoutS();
+
+        /**
+         * <code>float subscription_frequency_ms = 3;</code>
+         * @return The subscriptionFrequencyMs.
+         */
+        float getSubscriptionFrequencyMs();
     }
 
-    public static final int INCLUDEMAXVALUE_FIELD_NUMBER = 5;
-    private boolean includeMaxValue_;
     /**
-     * <pre>
-     * False is outside the interval
-     * </pre>
-     *
-     * <code>bool includeMaxValue = 5;</code>
-     * @return The includeMaxValue.
+     * Protobuf type {@code monitoring.AlarmSubscription}
      */
-    @java.lang.Override
-    public boolean getIncludeMaxValue() {
-      return includeMaxValue_;
-    }
+    public static final class AlarmSubscription extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.AlarmSubscription)
+    AlarmSubscriptionOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use AlarmSubscription.newBuilder() to construct.
+        private AlarmSubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (kpiMinValue_ != null) {
-        output.writeMessage(1, getKpiMinValue());
-      }
-      if (kpiMaxValue_ != null) {
-        output.writeMessage(2, getKpiMaxValue());
-      }
-      if (inRange_ != false) {
-        output.writeBool(3, inRange_);
-      }
-      if (includeMinValue_ != false) {
-        output.writeBool(4, includeMinValue_);
-      }
-      if (includeMaxValue_ != false) {
-        output.writeBool(5, includeMaxValue_);
-      }
-      unknownFields.writeTo(output);
-    }
+        private AlarmSubscription() {
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (kpiMinValue_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getKpiMinValue());
-      }
-      if (kpiMaxValue_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiMaxValue());
-      }
-      if (inRange_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(3, inRange_);
-      }
-      if (includeMinValue_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, includeMinValue_);
-      }
-      if (includeMaxValue_ != false) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(5, includeMaxValue_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AlarmSubscription();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiValueRange)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiValueRange other = (monitoring.Monitoring.KpiValueRange) obj;
-
-      if (hasKpiMinValue() != other.hasKpiMinValue()) return false;
-      if (hasKpiMinValue()) {
-        if (!getKpiMinValue()
-            .equals(other.getKpiMinValue())) return false;
-      }
-      if (hasKpiMaxValue() != other.hasKpiMaxValue()) return false;
-      if (hasKpiMaxValue()) {
-        if (!getKpiMaxValue()
-            .equals(other.getKpiMaxValue())) return false;
-      }
-      if (getInRange()
-          != other.getInRange()) return false;
-      if (getIncludeMinValue()
-          != other.getIncludeMinValue()) return false;
-      if (getIncludeMaxValue()
-          != other.getIncludeMaxValue()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasKpiMinValue()) {
-        hash = (37 * hash) + KPIMINVALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiMinValue().hashCode();
-      }
-      if (hasKpiMaxValue()) {
-        hash = (37 * hash) + KPIMAXVALUE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiMaxValue().hashCode();
-      }
-      hash = (37 * hash) + INRANGE_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getInRange());
-      hash = (37 * hash) + INCLUDEMINVALUE_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeMinValue());
-      hash = (37 * hash) + INCLUDEMAXVALUE_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-          getIncludeMaxValue());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
+        }
 
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValueRange parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int ALARM_ID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiValueRange prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        private monitoring.Monitoring.AlarmID alarmId_;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiValueRange}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiValueRange)
-        monitoring.Monitoring.KpiValueRangeOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiValueRange.class, monitoring.Monitoring.KpiValueRange.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiValueRange.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = null;
-        } else {
-          kpiMinValue_ = null;
-          kpiMinValueBuilder_ = null;
-        }
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = null;
-        } else {
-          kpiMaxValue_ = null;
-          kpiMaxValueBuilder_ = null;
-        }
-        inRange_ = false;
-
-        includeMinValue_ = false;
-
-        includeMaxValue_ = false;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValueRange_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiValueRange.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange build() {
-        monitoring.Monitoring.KpiValueRange result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValueRange buildPartial() {
-        monitoring.Monitoring.KpiValueRange result = new monitoring.Monitoring.KpiValueRange(this);
-        if (kpiMinValueBuilder_ == null) {
-          result.kpiMinValue_ = kpiMinValue_;
-        } else {
-          result.kpiMinValue_ = kpiMinValueBuilder_.build();
-        }
-        if (kpiMaxValueBuilder_ == null) {
-          result.kpiMaxValue_ = kpiMaxValue_;
-        } else {
-          result.kpiMaxValue_ = kpiMaxValueBuilder_.build();
-        }
-        result.inRange_ = inRange_;
-        result.includeMinValue_ = includeMinValue_;
-        result.includeMaxValue_ = includeMaxValue_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiValueRange) {
-          return mergeFrom((monitoring.Monitoring.KpiValueRange)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiValueRange other) {
-        if (other == monitoring.Monitoring.KpiValueRange.getDefaultInstance()) return this;
-        if (other.hasKpiMinValue()) {
-          mergeKpiMinValue(other.getKpiMinValue());
-        }
-        if (other.hasKpiMaxValue()) {
-          mergeKpiMaxValue(other.getKpiMaxValue());
-        }
-        if (other.getInRange() != false) {
-          setInRange(other.getInRange());
-        }
-        if (other.getIncludeMinValue() != false) {
-          setIncludeMinValue(other.getIncludeMinValue());
-        }
-        if (other.getIncludeMaxValue() != false) {
-          setIncludeMaxValue(other.getIncludeMaxValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiValueRange parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiValueRange) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiValue kpiMinValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMinValueBuilder_;
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       * @return Whether the kpiMinValue field is set.
-       */
-      public boolean hasKpiMinValue() {
-        return kpiMinValueBuilder_ != null || kpiMinValue_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       * @return The kpiMinValue.
-       */
-      public monitoring.Monitoring.KpiValue getKpiMinValue() {
-        if (kpiMinValueBuilder_ == null) {
-          return kpiMinValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
-        } else {
-          return kpiMinValueBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public Builder setKpiMinValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMinValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiMinValue_ = value;
-          onChanged();
-        } else {
-          kpiMinValueBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public Builder setKpiMinValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiMinValueBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public Builder mergeKpiMinValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMinValueBuilder_ == null) {
-          if (kpiMinValue_ != null) {
-            kpiMinValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiMinValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiMinValue_ = value;
-          }
-          onChanged();
-        } else {
-          kpiMinValueBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public Builder clearKpiMinValue() {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValue_ = null;
-          onChanged();
-        } else {
-          kpiMinValue_ = null;
-          kpiMinValueBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public monitoring.Monitoring.KpiValue.Builder getKpiMinValueBuilder() {
-        
-        onChanged();
-        return getKpiMinValueFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiMinValueOrBuilder() {
-        if (kpiMinValueBuilder_ != null) {
-          return kpiMinValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiMinValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMinValue_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMinValue = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiMinValueFieldBuilder() {
-        if (kpiMinValueBuilder_ == null) {
-          kpiMinValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiMinValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiMinValue_ = null;
-        }
-        return kpiMinValueBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiValue kpiMaxValue_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> kpiMaxValueBuilder_;
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       * @return Whether the kpiMaxValue field is set.
-       */
-      public boolean hasKpiMaxValue() {
-        return kpiMaxValueBuilder_ != null || kpiMaxValue_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       * @return The kpiMaxValue.
-       */
-      public monitoring.Monitoring.KpiValue getKpiMaxValue() {
-        if (kpiMaxValueBuilder_ == null) {
-          return kpiMaxValue_ == null ? monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
-        } else {
-          return kpiMaxValueBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public Builder setKpiMaxValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMaxValueBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiMaxValue_ = value;
-          onChanged();
-        } else {
-          kpiMaxValueBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public Builder setKpiMaxValue(
-          monitoring.Monitoring.KpiValue.Builder builderForValue) {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiMaxValueBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public Builder mergeKpiMaxValue(monitoring.Monitoring.KpiValue value) {
-        if (kpiMaxValueBuilder_ == null) {
-          if (kpiMaxValue_ != null) {
-            kpiMaxValue_ =
-              monitoring.Monitoring.KpiValue.newBuilder(kpiMaxValue_).mergeFrom(value).buildPartial();
-          } else {
-            kpiMaxValue_ = value;
-          }
-          onChanged();
-        } else {
-          kpiMaxValueBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public Builder clearKpiMaxValue() {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValue_ = null;
-          onChanged();
-        } else {
-          kpiMaxValue_ = null;
-          kpiMaxValueBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValue.Builder getKpiMaxValueBuilder() {
-        
-        onChanged();
-        return getKpiMaxValueFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      public monitoring.Monitoring.KpiValueOrBuilder getKpiMaxValueOrBuilder() {
-        if (kpiMaxValueBuilder_ != null) {
-          return kpiMaxValueBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiMaxValue_ == null ?
-              monitoring.Monitoring.KpiValue.getDefaultInstance() : kpiMaxValue_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValue kpiMaxValue = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder> 
-          getKpiMaxValueFieldBuilder() {
-        if (kpiMaxValueBuilder_ == null) {
-          kpiMaxValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValue, monitoring.Monitoring.KpiValue.Builder, monitoring.Monitoring.KpiValueOrBuilder>(
-                  getKpiMaxValue(),
-                  getParentForChildren(),
-                  isClean());
-          kpiMaxValue_ = null;
-        }
-        return kpiMaxValueBuilder_;
-      }
-
-      private boolean inRange_ ;
-      /**
-       * <pre>
-       * by default True
-       * </pre>
-       *
-       * <code>bool inRange = 3;</code>
-       * @return The inRange.
-       */
-      @java.lang.Override
-      public boolean getInRange() {
-        return inRange_;
-      }
-      /**
-       * <pre>
-       * by default True
-       * </pre>
-       *
-       * <code>bool inRange = 3;</code>
-       * @param value The inRange to set.
-       * @return This builder for chaining.
-       */
-      public Builder setInRange(boolean value) {
-        
-        inRange_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * by default True
-       * </pre>
-       *
-       * <code>bool inRange = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearInRange() {
-        
-        inRange_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeMinValue_ ;
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMinValue = 4;</code>
-       * @return The includeMinValue.
-       */
-      @java.lang.Override
-      public boolean getIncludeMinValue() {
-        return includeMinValue_;
-      }
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMinValue = 4;</code>
-       * @param value The includeMinValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeMinValue(boolean value) {
-        
-        includeMinValue_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMinValue = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeMinValue() {
-        
-        includeMinValue_ = false;
-        onChanged();
-        return this;
-      }
-
-      private boolean includeMaxValue_ ;
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMaxValue = 5;</code>
-       * @return The includeMaxValue.
-       */
-      @java.lang.Override
-      public boolean getIncludeMaxValue() {
-        return includeMaxValue_;
-      }
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMaxValue = 5;</code>
-       * @param value The includeMaxValue to set.
-       * @return This builder for chaining.
-       */
-      public Builder setIncludeMaxValue(boolean value) {
-        
-        includeMaxValue_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <pre>
-       * False is outside the interval
-       * </pre>
-       *
-       * <code>bool includeMaxValue = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearIncludeMaxValue() {
-        
-        includeMaxValue_ = false;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiValueRange)
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        @java.lang.Override
+        public boolean hasAlarmId() {
+            return alarmId_ != null;
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiValueRange)
-    private static final monitoring.Monitoring.KpiValueRange DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValueRange();
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmID getAlarmId() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
 
-    public static monitoring.Monitoring.KpiValueRange getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
 
-    private static final com.google.protobuf.Parser<KpiValueRange>
-        PARSER = new com.google.protobuf.AbstractParser<KpiValueRange>() {
-      @java.lang.Override
-      public KpiValueRange parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiValueRange(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiValueRange> parser() {
-      return PARSER;
-    }
+        public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiValueRange> getParserForType() {
-      return PARSER;
-    }
+        private float subscriptionTimeoutS_ = 0F;
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueRange getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>float subscription_timeout_s = 2;</code>
+         * @return The subscriptionTimeoutS.
+         */
+        @java.lang.Override
+        public float getSubscriptionTimeoutS() {
+            return subscriptionTimeoutS_;
+        }
 
-  }
+        public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
 
-  public interface KpiValueOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiValue)
-      com.google.protobuf.MessageOrBuilder {
+        private float subscriptionFrequencyMs_ = 0F;
 
-    /**
-     * <code>int32 int32Val = 1;</code>
-     * @return Whether the int32Val field is set.
-     */
-    boolean hasInt32Val();
-    /**
-     * <code>int32 int32Val = 1;</code>
-     * @return The int32Val.
-     */
-    int getInt32Val();
+        /**
+         * <code>float subscription_frequency_ms = 3;</code>
+         * @return The subscriptionFrequencyMs.
+         */
+        @java.lang.Override
+        public float getSubscriptionFrequencyMs() {
+            return subscriptionFrequencyMs_;
+        }
 
-    /**
-     * <code>uint32 uint32Val = 2;</code>
-     * @return Whether the uint32Val field is set.
-     */
-    boolean hasUint32Val();
-    /**
-     * <code>uint32 uint32Val = 2;</code>
-     * @return The uint32Val.
-     */
-    int getUint32Val();
+        private byte memoizedIsInitialized = -1;
 
-    /**
-     * <code>int64 int64Val = 3;</code>
-     * @return Whether the int64Val field is set.
-     */
-    boolean hasInt64Val();
-    /**
-     * <code>int64 int64Val = 3;</code>
-     * @return The int64Val.
-     */
-    long getInt64Val();
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-    /**
-     * <code>uint64 uint64Val = 4;</code>
-     * @return Whether the uint64Val field is set.
-     */
-    boolean hasUint64Val();
-    /**
-     * <code>uint64 uint64Val = 4;</code>
-     * @return The uint64Val.
-     */
-    long getUint64Val();
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (alarmId_ != null) {
+                output.writeMessage(1, getAlarmId());
+            }
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+                output.writeFloat(2, subscriptionTimeoutS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+                output.writeFloat(3, subscriptionFrequencyMs_);
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    /**
-     * <code>float floatVal = 5;</code>
-     * @return Whether the floatVal field is set.
-     */
-    boolean hasFloatVal();
-    /**
-     * <code>float floatVal = 5;</code>
-     * @return The floatVal.
-     */
-    float getFloatVal();
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (alarmId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
+            }
+            if (java.lang.Float.floatToRawIntBits(subscriptionTimeoutS_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, subscriptionTimeoutS_);
+            }
+            if (java.lang.Float.floatToRawIntBits(subscriptionFrequencyMs_) != 0) {
+                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, subscriptionFrequencyMs_);
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return Whether the stringVal field is set.
-     */
-    boolean hasStringVal();
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return The stringVal.
-     */
-    java.lang.String getStringVal();
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return The bytes for stringVal.
-     */
-    com.google.protobuf.ByteString
-        getStringValBytes();
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof monitoring.Monitoring.AlarmSubscription)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.AlarmSubscription other = (monitoring.Monitoring.AlarmSubscription) obj;
+            if (hasAlarmId() != other.hasAlarmId())
+                return false;
+            if (hasAlarmId()) {
+                if (!getAlarmId().equals(other.getAlarmId()))
+                    return false;
+            }
+            if (java.lang.Float.floatToIntBits(getSubscriptionTimeoutS()) != java.lang.Float.floatToIntBits(other.getSubscriptionTimeoutS()))
+                return false;
+            if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs()) != java.lang.Float.floatToIntBits(other.getSubscriptionFrequencyMs()))
+                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 (hasAlarmId()) {
+                hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getAlarmId().hashCode();
+            }
+            hash = (37 * hash) + SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionTimeoutS());
+            hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
+            hash = (53 * hash) + java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs());
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    /**
-     * <code>bool boolVal = 7;</code>
-     * @return Whether the boolVal field is set.
-     */
-    boolean hasBoolVal();
-    /**
-     * <code>bool boolVal = 7;</code>
-     * @return The boolVal.
-     */
-    boolean getBoolVal();
-
-    public monitoring.Monitoring.KpiValue.ValueCase getValueCase();
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiValue}
-   */
-  public static final class KpiValue extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiValue)
-      KpiValueOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiValue.newBuilder() to construct.
-    private KpiValue(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiValue() {
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiValue();
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiValue(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-              valueCase_ = 1;
-              value_ = input.readInt32();
-              break;
-            }
-            case 16: {
-              valueCase_ = 2;
-              value_ = input.readUInt32();
-              break;
-            }
-            case 24: {
-              valueCase_ = 3;
-              value_ = input.readInt64();
-              break;
-            }
-            case 32: {
-              valueCase_ = 4;
-              value_ = input.readUInt64();
-              break;
-            }
-            case 45: {
-              valueCase_ = 5;
-              value_ = input.readFloat();
-              break;
-            }
-            case 50: {
-              java.lang.String s = input.readStringRequireUtf8();
-              valueCase_ = 6;
-              value_ = s;
-              break;
-            }
-            case 56: {
-              valueCase_ = 7;
-              value_ = input.readBool();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private int valueCase_ = 0;
-    private java.lang.Object value_;
-    public enum ValueCase
-        implements com.google.protobuf.Internal.EnumLite,
-            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
-      INT32VAL(1),
-      UINT32VAL(2),
-      INT64VAL(3),
-      UINT64VAL(4),
-      FLOATVAL(5),
-      STRINGVAL(6),
-      BOOLVAL(7),
-      VALUE_NOT_SET(0);
-      private final int value;
-      private ValueCase(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 ValueCase valueOf(int value) {
-        return forNumber(value);
-      }
-
-      public static ValueCase forNumber(int value) {
-        switch (value) {
-          case 1: return INT32VAL;
-          case 2: return UINT32VAL;
-          case 3: return INT64VAL;
-          case 4: return UINT64VAL;
-          case 5: return FLOATVAL;
-          case 6: return STRINGVAL;
-          case 7: return BOOLVAL;
-          case 0: return VALUE_NOT_SET;
-          default: return null;
-        }
-      }
-      public int getNumber() {
-        return this.value;
-      }
-    };
-
-    public ValueCase
-    getValueCase() {
-      return ValueCase.forNumber(
-          valueCase_);
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static final int INT32VAL_FIELD_NUMBER = 1;
-    /**
-     * <code>int32 int32Val = 1;</code>
-     * @return Whether the int32Val field is set.
-     */
-    @java.lang.Override
-    public boolean hasInt32Val() {
-      return valueCase_ == 1;
-    }
-    /**
-     * <code>int32 int32Val = 1;</code>
-     * @return The int32Val.
-     */
-    @java.lang.Override
-    public int getInt32Val() {
-      if (valueCase_ == 1) {
-        return (java.lang.Integer) value_;
-      }
-      return 0;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int UINT32VAL_FIELD_NUMBER = 2;
-    /**
-     * <code>uint32 uint32Val = 2;</code>
-     * @return Whether the uint32Val field is set.
-     */
-    @java.lang.Override
-    public boolean hasUint32Val() {
-      return valueCase_ == 2;
-    }
-    /**
-     * <code>uint32 uint32Val = 2;</code>
-     * @return The uint32Val.
-     */
-    @java.lang.Override
-    public int getUint32Val() {
-      if (valueCase_ == 2) {
-        return (java.lang.Integer) value_;
-      }
-      return 0;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static final int INT64VAL_FIELD_NUMBER = 3;
-    /**
-     * <code>int64 int64Val = 3;</code>
-     * @return Whether the int64Val field is set.
-     */
-    @java.lang.Override
-    public boolean hasInt64Val() {
-      return valueCase_ == 3;
-    }
-    /**
-     * <code>int64 int64Val = 3;</code>
-     * @return The int64Val.
-     */
-    @java.lang.Override
-    public long getInt64Val() {
-      if (valueCase_ == 3) {
-        return (java.lang.Long) value_;
-      }
-      return 0L;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int UINT64VAL_FIELD_NUMBER = 4;
-    /**
-     * <code>uint64 uint64Val = 4;</code>
-     * @return Whether the uint64Val field is set.
-     */
-    @java.lang.Override
-    public boolean hasUint64Val() {
-      return valueCase_ == 4;
-    }
-    /**
-     * <code>uint64 uint64Val = 4;</code>
-     * @return The uint64Val.
-     */
-    @java.lang.Override
-    public long getUint64Val() {
-      if (valueCase_ == 4) {
-        return (java.lang.Long) value_;
-      }
-      return 0L;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    public static final int FLOATVAL_FIELD_NUMBER = 5;
-    /**
-     * <code>float floatVal = 5;</code>
-     * @return Whether the floatVal field is set.
-     */
-    @java.lang.Override
-    public boolean hasFloatVal() {
-      return valueCase_ == 5;
-    }
-    /**
-     * <code>float floatVal = 5;</code>
-     * @return The floatVal.
-     */
-    @java.lang.Override
-    public float getFloatVal() {
-      if (valueCase_ == 5) {
-        return (java.lang.Float) value_;
-      }
-      return 0F;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    public static final int STRINGVAL_FIELD_NUMBER = 6;
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return Whether the stringVal field is set.
-     */
-    public boolean hasStringVal() {
-      return valueCase_ == 6;
-    }
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return The stringVal.
-     */
-    public java.lang.String getStringVal() {
-      java.lang.Object ref = "";
-      if (valueCase_ == 6) {
-        ref = value_;
-      }
-      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();
-        if (valueCase_ == 6) {
-          value_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>string stringVal = 6;</code>
-     * @return The bytes for stringVal.
-     */
-    public com.google.protobuf.ByteString
-        getStringValBytes() {
-      java.lang.Object ref = "";
-      if (valueCase_ == 6) {
-        ref = value_;
-      }
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        if (valueCase_ == 6) {
-          value_ = b;
-        }
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    public static final int BOOLVAL_FIELD_NUMBER = 7;
-    /**
-     * <code>bool boolVal = 7;</code>
-     * @return Whether the boolVal field is set.
-     */
-    @java.lang.Override
-    public boolean hasBoolVal() {
-      return valueCase_ == 7;
-    }
-    /**
-     * <code>bool boolVal = 7;</code>
-     * @return The boolVal.
-     */
-    @java.lang.Override
-    public boolean getBoolVal() {
-      if (valueCase_ == 7) {
-        return (java.lang.Boolean) value_;
-      }
-      return false;
-    }
+        public static monitoring.Monitoring.AlarmSubscription parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (valueCase_ == 1) {
-        output.writeInt32(
-            1, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 2) {
-        output.writeUInt32(
-            2, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 3) {
-        output.writeInt64(
-            3, (long)((java.lang.Long) value_));
-      }
-      if (valueCase_ == 4) {
-        output.writeUInt64(
-            4, (long)((java.lang.Long) value_));
-      }
-      if (valueCase_ == 5) {
-        output.writeFloat(
-            5, (float)((java.lang.Float) value_));
-      }
-      if (valueCase_ == 6) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, value_);
-      }
-      if (valueCase_ == 7) {
-        output.writeBool(
-            7, (boolean)((java.lang.Boolean) value_));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static Builder newBuilder(monitoring.Monitoring.AlarmSubscription prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (valueCase_ == 1) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(
-              1, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 2) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt32Size(
-              2, (int)((java.lang.Integer) value_));
-      }
-      if (valueCase_ == 3) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(
-              3, (long)((java.lang.Long) value_));
-      }
-      if (valueCase_ == 4) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeUInt64Size(
-              4, (long)((java.lang.Long) value_));
-      }
-      if (valueCase_ == 5) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(
-              5, (float)((java.lang.Float) value_));
-      }
-      if (valueCase_ == 6) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, value_);
-      }
-      if (valueCase_ == 7) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(
-              7, (boolean)((java.lang.Boolean) value_));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiValue)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiValue other = (monitoring.Monitoring.KpiValue) obj;
-
-      if (!getValueCase().equals(other.getValueCase())) return false;
-      switch (valueCase_) {
-        case 1:
-          if (getInt32Val()
-              != other.getInt32Val()) return false;
-          break;
-        case 2:
-          if (getUint32Val()
-              != other.getUint32Val()) return false;
-          break;
-        case 3:
-          if (getInt64Val()
-              != other.getInt64Val()) return false;
-          break;
-        case 4:
-          if (getUint64Val()
-              != other.getUint64Val()) return false;
-          break;
-        case 5:
-          if (java.lang.Float.floatToIntBits(getFloatVal())
-              != java.lang.Float.floatToIntBits(
-                  other.getFloatVal())) return false;
-          break;
-        case 6:
-          if (!getStringVal()
-              .equals(other.getStringVal())) return false;
-          break;
-        case 7:
-          if (getBoolVal()
-              != other.getBoolVal()) return false;
-          break;
-        case 0:
-        default:
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      switch (valueCase_) {
-        case 1:
-          hash = (37 * hash) + INT32VAL_FIELD_NUMBER;
-          hash = (53 * hash) + getInt32Val();
-          break;
-        case 2:
-          hash = (37 * hash) + UINT32VAL_FIELD_NUMBER;
-          hash = (53 * hash) + getUint32Val();
-          break;
-        case 3:
-          hash = (37 * hash) + INT64VAL_FIELD_NUMBER;
-          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-              getInt64Val());
-          break;
-        case 4:
-          hash = (37 * hash) + UINT64VAL_FIELD_NUMBER;
-          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-              getUint64Val());
-          break;
-        case 5:
-          hash = (37 * hash) + FLOATVAL_FIELD_NUMBER;
-          hash = (53 * hash) + java.lang.Float.floatToIntBits(
-              getFloatVal());
-          break;
-        case 6:
-          hash = (37 * hash) + STRINGVAL_FIELD_NUMBER;
-          hash = (53 * hash) + getStringVal().hashCode();
-          break;
-        case 7:
-          hash = (37 * hash) + BOOLVAL_FIELD_NUMBER;
-          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
-              getBoolVal());
-          break;
-        case 0:
-        default:
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * Protobuf type {@code monitoring.AlarmSubscription}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.AlarmSubscription)
+        monitoring.Monitoring.AlarmSubscriptionOrBuilder {
 
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValue parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiValue parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiValue 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 com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiValue}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiValue)
-        monitoring.Monitoring.KpiValueOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiValue.class, monitoring.Monitoring.KpiValue.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiValue.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        valueCase_ = 0;
-        value_ = null;
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiValue_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiValue.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValue build() {
-        monitoring.Monitoring.KpiValue result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiValue buildPartial() {
-        monitoring.Monitoring.KpiValue result = new monitoring.Monitoring.KpiValue(this);
-        if (valueCase_ == 1) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 2) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 3) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 4) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 5) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 6) {
-          result.value_ = value_;
-        }
-        if (valueCase_ == 7) {
-          result.value_ = value_;
-        }
-        result.valueCase_ = valueCase_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiValue) {
-          return mergeFrom((monitoring.Monitoring.KpiValue)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiValue other) {
-        if (other == monitoring.Monitoring.KpiValue.getDefaultInstance()) return this;
-        switch (other.getValueCase()) {
-          case INT32VAL: {
-            setInt32Val(other.getInt32Val());
-            break;
-          }
-          case UINT32VAL: {
-            setUint32Val(other.getUint32Val());
-            break;
-          }
-          case INT64VAL: {
-            setInt64Val(other.getInt64Val());
-            break;
-          }
-          case UINT64VAL: {
-            setUint64Val(other.getUint64Val());
-            break;
-          }
-          case FLOATVAL: {
-            setFloatVal(other.getFloatVal());
-            break;
-          }
-          case STRINGVAL: {
-            valueCase_ = 6;
-            value_ = other.value_;
-            onChanged();
-            break;
-          }
-          case BOOLVAL: {
-            setBoolVal(other.getBoolVal());
-            break;
-          }
-          case VALUE_NOT_SET: {
-            break;
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiValue parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiValue) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int valueCase_ = 0;
-      private java.lang.Object value_;
-      public ValueCase
-          getValueCase() {
-        return ValueCase.forNumber(
-            valueCase_);
-      }
-
-      public Builder clearValue() {
-        valueCase_ = 0;
-        value_ = null;
-        onChanged();
-        return this;
-      }
-
-
-      /**
-       * <code>int32 int32Val = 1;</code>
-       * @return Whether the int32Val field is set.
-       */
-      public boolean hasInt32Val() {
-        return valueCase_ == 1;
-      }
-      /**
-       * <code>int32 int32Val = 1;</code>
-       * @return The int32Val.
-       */
-      public int getInt32Val() {
-        if (valueCase_ == 1) {
-          return (java.lang.Integer) value_;
-        }
-        return 0;
-      }
-      /**
-       * <code>int32 int32Val = 1;</code>
-       * @param value The int32Val to set.
-       * @return This builder for chaining.
-       */
-      public Builder setInt32Val(int value) {
-        valueCase_ = 1;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>int32 int32Val = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearInt32Val() {
-        if (valueCase_ == 1) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-
-      /**
-       * <code>uint32 uint32Val = 2;</code>
-       * @return Whether the uint32Val field is set.
-       */
-      public boolean hasUint32Val() {
-        return valueCase_ == 2;
-      }
-      /**
-       * <code>uint32 uint32Val = 2;</code>
-       * @return The uint32Val.
-       */
-      public int getUint32Val() {
-        if (valueCase_ == 2) {
-          return (java.lang.Integer) value_;
-        }
-        return 0;
-      }
-      /**
-       * <code>uint32 uint32Val = 2;</code>
-       * @param value The uint32Val to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUint32Val(int value) {
-        valueCase_ = 2;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint32 uint32Val = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearUint32Val() {
-        if (valueCase_ == 2) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-
-      /**
-       * <code>int64 int64Val = 3;</code>
-       * @return Whether the int64Val field is set.
-       */
-      public boolean hasInt64Val() {
-        return valueCase_ == 3;
-      }
-      /**
-       * <code>int64 int64Val = 3;</code>
-       * @return The int64Val.
-       */
-      public long getInt64Val() {
-        if (valueCase_ == 3) {
-          return (java.lang.Long) value_;
-        }
-        return 0L;
-      }
-      /**
-       * <code>int64 int64Val = 3;</code>
-       * @param value The int64Val to set.
-       * @return This builder for chaining.
-       */
-      public Builder setInt64Val(long value) {
-        valueCase_ = 3;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>int64 int64Val = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearInt64Val() {
-        if (valueCase_ == 3) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-
-      /**
-       * <code>uint64 uint64Val = 4;</code>
-       * @return Whether the uint64Val field is set.
-       */
-      public boolean hasUint64Val() {
-        return valueCase_ == 4;
-      }
-      /**
-       * <code>uint64 uint64Val = 4;</code>
-       * @return The uint64Val.
-       */
-      public long getUint64Val() {
-        if (valueCase_ == 4) {
-          return (java.lang.Long) value_;
-        }
-        return 0L;
-      }
-      /**
-       * <code>uint64 uint64Val = 4;</code>
-       * @param value The uint64Val to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUint64Val(long value) {
-        valueCase_ = 4;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>uint64 uint64Val = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearUint64Val() {
-        if (valueCase_ == 4) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-
-      /**
-       * <code>float floatVal = 5;</code>
-       * @return Whether the floatVal field is set.
-       */
-      public boolean hasFloatVal() {
-        return valueCase_ == 5;
-      }
-      /**
-       * <code>float floatVal = 5;</code>
-       * @return The floatVal.
-       */
-      public float getFloatVal() {
-        if (valueCase_ == 5) {
-          return (java.lang.Float) value_;
-        }
-        return 0F;
-      }
-      /**
-       * <code>float floatVal = 5;</code>
-       * @param value The floatVal to set.
-       * @return This builder for chaining.
-       */
-      public Builder setFloatVal(float value) {
-        valueCase_ = 5;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float floatVal = 5;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearFloatVal() {
-        if (valueCase_ == 5) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-
-      /**
-       * <code>string stringVal = 6;</code>
-       * @return Whether the stringVal field is set.
-       */
-      @java.lang.Override
-      public boolean hasStringVal() {
-        return valueCase_ == 6;
-      }
-      /**
-       * <code>string stringVal = 6;</code>
-       * @return The stringVal.
-       */
-      @java.lang.Override
-      public java.lang.String getStringVal() {
-        java.lang.Object ref = "";
-        if (valueCase_ == 6) {
-          ref = value_;
-        }
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          if (valueCase_ == 6) {
-            value_ = s;
-          }
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string stringVal = 6;</code>
-       * @return The bytes for stringVal.
-       */
-      @java.lang.Override
-      public com.google.protobuf.ByteString
-          getStringValBytes() {
-        java.lang.Object ref = "";
-        if (valueCase_ == 6) {
-          ref = value_;
-        }
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          if (valueCase_ == 6) {
-            value_ = b;
-          }
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string stringVal = 6;</code>
-       * @param value The stringVal to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStringVal(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  valueCase_ = 6;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string stringVal = 6;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearStringVal() {
-        if (valueCase_ == 6) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-      /**
-       * <code>string stringVal = 6;</code>
-       * @param value The bytes for stringVal to set.
-       * @return This builder for chaining.
-       */
-      public Builder setStringValBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        valueCase_ = 6;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-
-      /**
-       * <code>bool boolVal = 7;</code>
-       * @return Whether the boolVal field is set.
-       */
-      public boolean hasBoolVal() {
-        return valueCase_ == 7;
-      }
-      /**
-       * <code>bool boolVal = 7;</code>
-       * @return The boolVal.
-       */
-      public boolean getBoolVal() {
-        if (valueCase_ == 7) {
-          return (java.lang.Boolean) value_;
-        }
-        return false;
-      }
-      /**
-       * <code>bool boolVal = 7;</code>
-       * @param value The boolVal to set.
-       * @return This builder for chaining.
-       */
-      public Builder setBoolVal(boolean value) {
-        valueCase_ = 7;
-        value_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>bool boolVal = 7;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearBoolVal() {
-        if (valueCase_ == 7) {
-          valueCase_ = 0;
-          value_ = null;
-          onChanged();
-        }
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiValue)
-    }
+            // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
+            private Builder() {
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiValue)
-    private static final monitoring.Monitoring.KpiValue DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiValue();
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    public static monitoring.Monitoring.KpiValue getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                subscriptionTimeoutS_ = 0F;
+                subscriptionFrequencyMs_ = 0F;
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<KpiValue>
-        PARSER = new com.google.protobuf.AbstractParser<KpiValue>() {
-      @java.lang.Override
-      public KpiValue parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiValue(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiValue> parser() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiValue> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
+                return monitoring.Monitoring.AlarmSubscription.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValue getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmSubscription build() {
+                monitoring.Monitoring.AlarmSubscription result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-  }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmSubscription buildPartial() {
+                monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-  public interface KpiListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiList)
-      com.google.protobuf.MessageOrBuilder {
+            private void buildPartial0(monitoring.Monitoring.AlarmSubscription result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
+                }
+            }
 
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.Kpi> 
-        getKpiList();
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    monitoring.Monitoring.Kpi getKpi(int index);
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    int getKpiCount();
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-        getKpiOrBuilderList();
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiList}
-   */
-  public static final class KpiList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiList)
-      KpiListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiList.newBuilder() to construct.
-    private KpiList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiList() {
-      kpi_ = java.util.Collections.emptyList();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.AlarmSubscription) {
+                    return mergeFrom((monitoring.Monitoring.AlarmSubscription) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiList();
-    }
+            public Builder mergeFrom(monitoring.Monitoring.AlarmSubscription other) {
+                if (other == monitoring.Monitoring.AlarmSubscription.getDefaultInstance())
+                    return this;
+                if (other.hasAlarmId()) {
+                    mergeAlarmId(other.getAlarmId());
+                }
+                if (other.getSubscriptionTimeoutS() != 0F) {
+                    setSubscriptionTimeoutS(other.getSubscriptionTimeoutS());
+                }
+                if (other.getSubscriptionFrequencyMs() != 0F) {
+                    setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpi_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpi_.add(
-                  input.readMessage(monitoring.Monitoring.Kpi.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpi_ = java.util.Collections.unmodifiableList(kpi_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
-    }
+            @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(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 21:
+                                {
+                                    subscriptionTimeoutS_ = input.readFloat();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 21
+                            case 29:
+                                {
+                                    subscriptionFrequencyMs_ = input.readFloat();
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 29
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    public static final int KPI_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.Kpi> kpi_;
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.Kpi> getKpiList() {
-      return kpi_;
-    }
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-        getKpiOrBuilderList() {
-      return kpi_;
-    }
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    @java.lang.Override
-    public int getKpiCount() {
-      return kpi_.size();
-    }
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.Kpi getKpi(int index) {
-      return kpi_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.Kpi kpi = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(
-        int index) {
-      return kpi_.get(index);
-    }
+            private int bitField0_;
+
+            private monitoring.Monitoring.AlarmID alarmId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
+
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return Whether the alarmId field is set.
+             */
+            public boolean hasAlarmId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return The alarmId.
+             */
+            public monitoring.Monitoring.AlarmID getAlarmId() {
+                if (alarmIdBuilder_ == null) {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                } else {
+                    return alarmIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    alarmId_ = value;
+                } else {
+                    alarmIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = builderForValue.build();
+                } else {
+                    alarmIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
+                    } else {
+                        alarmId_ = value;
+                    }
+                } else {
+                    alarmIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder clearAlarmId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < kpi_.size(); i++) {
-        output.writeMessage(1, kpi_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getAlarmIdFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < kpi_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpi_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+                if (alarmIdBuilder_ != null) {
+                    return alarmIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiList other = (monitoring.Monitoring.KpiList) obj;
-
-      if (!getKpiList()
-          .equals(other.getKpiList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> getAlarmIdFieldBuilder() {
+                if (alarmIdBuilder_ == null) {
+                    alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(getAlarmId(), getParentForChildren(), isClean());
+                    alarmId_ = null;
+                }
+                return alarmIdBuilder_;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiCount() > 0) {
-        hash = (37 * hash) + KPI_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private float subscriptionTimeoutS_;
 
-    public static monitoring.Monitoring.KpiList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>float subscription_timeout_s = 2;</code>
+             * @return The subscriptionTimeoutS.
+             */
+            @java.lang.Override
+            public float getSubscriptionTimeoutS() {
+                return subscriptionTimeoutS_;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>float subscription_timeout_s = 2;</code>
+             * @param value The subscriptionTimeoutS to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSubscriptionTimeoutS(float value) {
+                subscriptionTimeoutS_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.KpiList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiList)
-        monitoring.Monitoring.KpiListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiList.class, monitoring.Monitoring.KpiList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiBuilder_ == null) {
-          kpi_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          kpiBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiList build() {
-        monitoring.Monitoring.KpiList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiList buildPartial() {
-        monitoring.Monitoring.KpiList result = new monitoring.Monitoring.KpiList(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpi_ = java.util.Collections.unmodifiableList(kpi_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpi_ = kpi_;
-        } else {
-          result.kpi_ = kpiBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiList) {
-          return mergeFrom((monitoring.Monitoring.KpiList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiList other) {
-        if (other == monitoring.Monitoring.KpiList.getDefaultInstance()) return this;
-        if (kpiBuilder_ == null) {
-          if (!other.kpi_.isEmpty()) {
-            if (kpi_.isEmpty()) {
-              kpi_ = other.kpi_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiIsMutable();
-              kpi_.addAll(other.kpi_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpi_.isEmpty()) {
-            if (kpiBuilder_.isEmpty()) {
-              kpiBuilder_.dispose();
-              kpiBuilder_ = null;
-              kpi_ = other.kpi_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiFieldBuilder() : null;
-            } else {
-              kpiBuilder_.addAllMessages(other.kpi_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.Kpi> kpi_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpi_ = new java.util.ArrayList<monitoring.Monitoring.Kpi>(kpi_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> kpiBuilder_;
-
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.Kpi> getKpiList() {
-        if (kpiBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpi_);
-        } else {
-          return kpiBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public int getKpiCount() {
-        if (kpiBuilder_ == null) {
-          return kpi_.size();
-        } else {
-          return kpiBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public monitoring.Monitoring.Kpi getKpi(int index) {
-        if (kpiBuilder_ == null) {
-          return kpi_.get(index);
-        } else {
-          return kpiBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder setKpi(
-          int index, monitoring.Monitoring.Kpi value) {
-        if (kpiBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIsMutable();
-          kpi_.set(index, value);
-          onChanged();
-        } else {
-          kpiBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder setKpi(
-          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiBuilder_ == null) {
-          ensureKpiIsMutable();
-          kpi_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder addKpi(monitoring.Monitoring.Kpi value) {
-        if (kpiBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIsMutable();
-          kpi_.add(value);
-          onChanged();
-        } else {
-          kpiBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder addKpi(
-          int index, monitoring.Monitoring.Kpi value) {
-        if (kpiBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiIsMutable();
-          kpi_.add(index, value);
-          onChanged();
-        } else {
-          kpiBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder addKpi(
-          monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiBuilder_ == null) {
-          ensureKpiIsMutable();
-          kpi_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder addKpi(
-          int index, monitoring.Monitoring.Kpi.Builder builderForValue) {
-        if (kpiBuilder_ == null) {
-          ensureKpiIsMutable();
-          kpi_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder addAllKpi(
-          java.lang.Iterable<? extends monitoring.Monitoring.Kpi> values) {
-        if (kpiBuilder_ == null) {
-          ensureKpiIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpi_);
-          onChanged();
-        } else {
-          kpiBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder clearKpi() {
-        if (kpiBuilder_ == null) {
-          kpi_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public Builder removeKpi(int index) {
-        if (kpiBuilder_ == null) {
-          ensureKpiIsMutable();
-          kpi_.remove(index);
-          onChanged();
-        } else {
-          kpiBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public monitoring.Monitoring.Kpi.Builder getKpiBuilder(
-          int index) {
-        return getKpiFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public monitoring.Monitoring.KpiOrBuilder getKpiOrBuilder(
-          int index) {
-        if (kpiBuilder_ == null) {
-          return kpi_.get(index);  } else {
-          return kpiBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiOrBuilder> 
-           getKpiOrBuilderList() {
-        if (kpiBuilder_ != null) {
-          return kpiBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpi_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public monitoring.Monitoring.Kpi.Builder addKpiBuilder() {
-        return getKpiFieldBuilder().addBuilder(
-            monitoring.Monitoring.Kpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public monitoring.Monitoring.Kpi.Builder addKpiBuilder(
-          int index) {
-        return getKpiFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.Kpi.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.Kpi kpi = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.Kpi.Builder> 
-           getKpiBuilderList() {
-        return getKpiFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder> 
-          getKpiFieldBuilder() {
-        if (kpiBuilder_ == null) {
-          kpiBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.Kpi, monitoring.Monitoring.Kpi.Builder, monitoring.Monitoring.KpiOrBuilder>(
-                  kpi_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpi_ = null;
-        }
-        return kpiBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiList)
-    }
+            /**
+             * <code>float subscription_timeout_s = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSubscriptionTimeoutS() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                subscriptionTimeoutS_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.KpiList)
-    private static final monitoring.Monitoring.KpiList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiList();
-    }
+            private float subscriptionFrequencyMs_;
 
-    public static monitoring.Monitoring.KpiList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>float subscription_frequency_ms = 3;</code>
+             * @return The subscriptionFrequencyMs.
+             */
+            @java.lang.Override
+            public float getSubscriptionFrequencyMs() {
+                return subscriptionFrequencyMs_;
+            }
 
-    private static final com.google.protobuf.Parser<KpiList>
-        PARSER = new com.google.protobuf.AbstractParser<KpiList>() {
-      @java.lang.Override
-      public KpiList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiList> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>float subscription_frequency_ms = 3;</code>
+             * @param value The subscriptionFrequencyMs to set.
+             * @return This builder for chaining.
+             */
+            public Builder setSubscriptionFrequencyMs(float value) {
+                subscriptionFrequencyMs_ = value;
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiList> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>float subscription_frequency_ms = 3;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearSubscriptionFrequencyMs() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                subscriptionFrequencyMs_ = 0F;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.AlarmSubscription)
+        }
 
-  public interface KpiDescriptorListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.KpiDescriptorList)
-      com.google.protobuf.MessageOrBuilder {
+        // @@protoc_insertion_point(class_scope:monitoring.AlarmSubscription)
+        private static final monitoring.Monitoring.AlarmSubscription DEFAULT_INSTANCE;
 
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.KpiDescriptor> 
-        getKpiDescriptorListList();
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index);
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    int getKpiDescriptorListCount();
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-        getKpiDescriptorListOrBuilderList();
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code monitoring.KpiDescriptorList}
-   */
-  public static final class KpiDescriptorList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.KpiDescriptorList)
-      KpiDescriptorListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use KpiDescriptorList.newBuilder() to construct.
-    private KpiDescriptorList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private KpiDescriptorList() {
-      kpiDescriptorList_ = java.util.Collections.emptyList();
-    }
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmSubscription();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new KpiDescriptorList();
-    }
+        public static monitoring.Monitoring.AlarmSubscription getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private KpiDescriptorList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              kpiDescriptorList_.add(
-                  input.readMessage(monitoring.Monitoring.KpiDescriptor.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
-    }
+        private static final com.google.protobuf.Parser<AlarmSubscription> PARSER = new com.google.protobuf.AbstractParser<AlarmSubscription>() {
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
-    }
+            @java.lang.Override
+            public AlarmSubscription 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 final int KPI_DESCRIPTOR_LIST_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_;
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
-      return kpiDescriptorList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-        getKpiDescriptorListOrBuilderList() {
-      return kpiDescriptorList_;
-    }
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    @java.lang.Override
-    public int getKpiDescriptorListCount() {
-      return kpiDescriptorList_.size();
-    }
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
-      return kpiDescriptorList_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-        int index) {
-      return kpiDescriptorList_.get(index);
-    }
+        public static com.google.protobuf.Parser<AlarmSubscription> parser() {
+            return PARSER;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public com.google.protobuf.Parser<AlarmSubscription> getParserForType() {
+            return PARSER;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
-        output.writeMessage(1, kpiDescriptorList_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+    public interface AlarmResponseOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.AlarmResponse)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < kpiDescriptorList_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, kpiDescriptorList_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        boolean hasAlarmId();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.KpiDescriptorList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.KpiDescriptorList other = (monitoring.Monitoring.KpiDescriptorList) obj;
-
-      if (!getKpiDescriptorListList()
-          .equals(other.getKpiDescriptorListList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        monitoring.Monitoring.AlarmID getAlarmId();
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getKpiDescriptorListCount() > 0) {
-        hash = (37 * hash) + KPI_DESCRIPTOR_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiDescriptorListList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
 
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.KpiDescriptorList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>string text = 2;</code>
+         * @return The text.
+         */
+        java.lang.String getText();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.KpiDescriptorList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        /**
+         * <code>string text = 2;</code>
+         * @return The bytes for text.
+         */
+        com.google.protobuf.ByteString getTextBytes();
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         * @return Whether the kpiList field is set.
+         */
+        boolean hasKpiList();
+
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         * @return The kpiList.
+         */
+        monitoring.Monitoring.KpiList getKpiList();
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         */
+        monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder();
     }
+
     /**
-     * Protobuf type {@code monitoring.KpiDescriptorList}
+     * Protobuf type {@code monitoring.AlarmResponse}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.KpiDescriptorList)
-        monitoring.Monitoring.KpiDescriptorListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.KpiDescriptorList.class, monitoring.Monitoring.KpiDescriptorList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.KpiDescriptorList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getKpiDescriptorListFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          kpiDescriptorListBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_KpiDescriptorList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
-        return monitoring.Monitoring.KpiDescriptorList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList build() {
-        monitoring.Monitoring.KpiDescriptorList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.KpiDescriptorList buildPartial() {
-        monitoring.Monitoring.KpiDescriptorList result = new monitoring.Monitoring.KpiDescriptorList(this);
-        int from_bitField0_ = bitField0_;
-        if (kpiDescriptorListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            kpiDescriptorList_ = java.util.Collections.unmodifiableList(kpiDescriptorList_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.kpiDescriptorList_ = kpiDescriptorList_;
-        } else {
-          result.kpiDescriptorList_ = kpiDescriptorListBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.KpiDescriptorList) {
-          return mergeFrom((monitoring.Monitoring.KpiDescriptorList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.KpiDescriptorList other) {
-        if (other == monitoring.Monitoring.KpiDescriptorList.getDefaultInstance()) return this;
-        if (kpiDescriptorListBuilder_ == null) {
-          if (!other.kpiDescriptorList_.isEmpty()) {
-            if (kpiDescriptorList_.isEmpty()) {
-              kpiDescriptorList_ = other.kpiDescriptorList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureKpiDescriptorListIsMutable();
-              kpiDescriptorList_.addAll(other.kpiDescriptorList_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.kpiDescriptorList_.isEmpty()) {
-            if (kpiDescriptorListBuilder_.isEmpty()) {
-              kpiDescriptorListBuilder_.dispose();
-              kpiDescriptorListBuilder_ = null;
-              kpiDescriptorList_ = other.kpiDescriptorList_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              kpiDescriptorListBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getKpiDescriptorListFieldBuilder() : null;
-            } else {
-              kpiDescriptorListBuilder_.addAllMessages(other.kpiDescriptorList_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.KpiDescriptorList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.KpiDescriptorList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.KpiDescriptor> kpiDescriptorList_ =
-        java.util.Collections.emptyList();
-      private void ensureKpiDescriptorListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          kpiDescriptorList_ = new java.util.ArrayList<monitoring.Monitoring.KpiDescriptor>(kpiDescriptorList_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> kpiDescriptorListBuilder_;
-
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiDescriptor> getKpiDescriptorListList() {
-        if (kpiDescriptorListBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
-        } else {
-          return kpiDescriptorListBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public int getKpiDescriptorListCount() {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.size();
-        } else {
-          return kpiDescriptorListBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptor getKpiDescriptorList(int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.get(index);
-        } else {
-          return kpiDescriptorListBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder setKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.set(index, value);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder setKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder addKpiDescriptorList(monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(value);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder addKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor value) {
-        if (kpiDescriptorListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(index, value);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder addKpiDescriptorList(
-          monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(builderForValue.build());
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder addKpiDescriptorList(
-          int index, monitoring.Monitoring.KpiDescriptor.Builder builderForValue) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder addAllKpiDescriptorList(
-          java.lang.Iterable<? extends monitoring.Monitoring.KpiDescriptor> values) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, kpiDescriptorList_);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder clearKpiDescriptorList() {
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorList_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public Builder removeKpiDescriptorList(int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          ensureKpiDescriptorListIsMutable();
-          kpiDescriptorList_.remove(index);
-          onChanged();
-        } else {
-          kpiDescriptorListBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptor.Builder getKpiDescriptorListBuilder(
-          int index) {
-        return getKpiDescriptorListFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptorOrBuilder getKpiDescriptorListOrBuilder(
-          int index) {
-        if (kpiDescriptorListBuilder_ == null) {
-          return kpiDescriptorList_.get(index);  } else {
-          return kpiDescriptorListBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.KpiDescriptorOrBuilder> 
-           getKpiDescriptorListOrBuilderList() {
-        if (kpiDescriptorListBuilder_ != null) {
-          return kpiDescriptorListBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(kpiDescriptorList_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder() {
-        return getKpiDescriptorListFieldBuilder().addBuilder(
-            monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public monitoring.Monitoring.KpiDescriptor.Builder addKpiDescriptorListBuilder(
-          int index) {
-        return getKpiDescriptorListFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.KpiDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.KpiDescriptor kpi_descriptor_list = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.KpiDescriptor.Builder> 
-           getKpiDescriptorListBuilderList() {
-        return getKpiDescriptorListFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder> 
-          getKpiDescriptorListFieldBuilder() {
-        if (kpiDescriptorListBuilder_ == null) {
-          kpiDescriptorListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiDescriptor.Builder, monitoring.Monitoring.KpiDescriptorOrBuilder>(
-                  kpiDescriptorList_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          kpiDescriptorList_ = null;
-        }
-        return kpiDescriptorListBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.KpiDescriptorList)
-    }
-
-    // @@protoc_insertion_point(class_scope:monitoring.KpiDescriptorList)
-    private static final monitoring.Monitoring.KpiDescriptorList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.KpiDescriptorList();
-    }
+    public static final class AlarmResponse extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.AlarmResponse)
+    AlarmResponseOrBuilder {
 
-    public static monitoring.Monitoring.KpiDescriptorList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        private static final long serialVersionUID = 0L;
 
-    private static final com.google.protobuf.Parser<KpiDescriptorList>
-        PARSER = new com.google.protobuf.AbstractParser<KpiDescriptorList>() {
-      @java.lang.Override
-      public KpiDescriptorList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new KpiDescriptorList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<KpiDescriptorList> parser() {
-      return PARSER;
-    }
+        // Use AlarmResponse.newBuilder() to construct.
+        private AlarmResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<KpiDescriptorList> getParserForType() {
-      return PARSER;
-    }
+        private AlarmResponse() {
+            text_ = "";
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.KpiDescriptorList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AlarmResponse();
+        }
 
-  }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
+        }
 
-  public interface SubsDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsDescriptor)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmResponse.class, monitoring.Monitoring.AlarmResponse.Builder.class);
+        }
 
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    boolean hasSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    monitoring.Monitoring.SubscriptionID getSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+        public static final int ALARM_ID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+        private monitoring.Monitoring.AlarmID alarmId_;
 
-    /**
-     * <code>float sampling_duration_s = 3;</code>
-     * @return The samplingDurationS.
-     */
-    float getSamplingDurationS();
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return Whether the alarmId field is set.
+         */
+        @java.lang.Override
+        public boolean hasAlarmId() {
+            return alarmId_ != null;
+        }
 
-    /**
-     * <code>float sampling_interval_s = 4;</code>
-     * @return The samplingIntervalS.
-     */
-    float getSamplingIntervalS();
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         * @return The alarmId.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmID getAlarmId() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     * @return Whether the startTimestamp field is set.
-     */
-    boolean hasStartTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     * @return The startTimestamp.
-     */
-    context.ContextOuterClass.Timestamp getStartTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder();
+        /**
+         * <code>.monitoring.AlarmID alarm_id = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+            return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+        }
 
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     * @return Whether the endTimestamp field is set.
-     */
-    boolean hasEndTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     * @return The endTimestamp.
-     */
-    context.ContextOuterClass.Timestamp getEndTimestamp();
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.SubsDescriptor}
-   */
-  public static final class SubsDescriptor extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsDescriptor)
-      SubsDescriptorOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SubsDescriptor.newBuilder() to construct.
-    private SubsDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SubsDescriptor() {
-    }
+        public static final int TEXT_FIELD_NUMBER = 2;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SubsDescriptor();
-    }
+        @SuppressWarnings("serial")
+        private volatile java.lang.Object text_ = "";
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SubsDescriptor(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-              if (subsId_ != null) {
-                subBuilder = subsId_.toBuilder();
-              }
-              subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(subsId_);
-                subsId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 29: {
-
-              samplingDurationS_ = input.readFloat();
-              break;
-            }
-            case 37: {
-
-              samplingIntervalS_ = input.readFloat();
-              break;
-            }
-            case 42: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (startTimestamp_ != null) {
-                subBuilder = startTimestamp_.toBuilder();
-              }
-              startTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(startTimestamp_);
-                startTimestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (endTimestamp_ != null) {
-                subBuilder = endTimestamp_.toBuilder();
-              }
-              endTimestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(endTimestamp_);
-                endTimestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
-    }
+        /**
+         * <code>string text = 2;</code>
+         * @return The text.
+         */
+        @java.lang.Override
+        public java.lang.String getText() {
+            java.lang.Object ref = text_;
+            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();
+                text_ = s;
+                return s;
+            }
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
-    }
+        /**
+         * <code>string text = 2;</code>
+         * @return The bytes for text.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getTextBytes() {
+            java.lang.Object ref = text_;
+            if (ref instanceof java.lang.String) {
+                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                text_ = b;
+                return b;
+            } else {
+                return (com.google.protobuf.ByteString) ref;
+            }
+        }
 
-    public static final int SUBS_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.SubscriptionID subsId_;
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSubsId() {
-      return subsId_ != null;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getSubsId() {
-      return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-      return getSubsId();
-    }
+        public static final int KPI_LIST_FIELD_NUMBER = 3;
 
-    public static final int KPI_ID_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        private monitoring.Monitoring.KpiList kpiList_;
 
-    public static final int SAMPLING_DURATION_S_FIELD_NUMBER = 3;
-    private float samplingDurationS_;
-    /**
-     * <code>float sampling_duration_s = 3;</code>
-     * @return The samplingDurationS.
-     */
-    @java.lang.Override
-    public float getSamplingDurationS() {
-      return samplingDurationS_;
-    }
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         * @return Whether the kpiList field is set.
+         */
+        @java.lang.Override
+        public boolean hasKpiList() {
+            return kpiList_ != null;
+        }
 
-    public static final int SAMPLING_INTERVAL_S_FIELD_NUMBER = 4;
-    private float samplingIntervalS_;
-    /**
-     * <code>float sampling_interval_s = 4;</code>
-     * @return The samplingIntervalS.
-     */
-    @java.lang.Override
-    public float getSamplingIntervalS() {
-      return samplingIntervalS_;
-    }
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         * @return The kpiList.
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiList getKpiList() {
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+        }
 
-    public static final int START_TIMESTAMP_FIELD_NUMBER = 5;
-    private context.ContextOuterClass.Timestamp startTimestamp_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     * @return Whether the startTimestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasStartTimestamp() {
-      return startTimestamp_ != null;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     * @return The startTimestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getStartTimestamp() {
-      return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples since X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp start_timestamp = 5;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-      return getStartTimestamp();
-    }
+        /**
+         * <code>.monitoring.KpiList kpi_list = 3;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
+            return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+        }
 
-    public static final int END_TIMESTAMP_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.Timestamp endTimestamp_;
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     * @return Whether the endTimestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasEndTimestamp() {
-      return endTimestamp_ != null;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     * @return The endTimestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getEndTimestamp() {
-      return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-    }
-    /**
-     * <pre>
-     * used when you want something like "get the samples until X date/time"
-     * </pre>
-     *
-     * <code>.context.Timestamp end_timestamp = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-      return getEndTimestamp();
-    }
+        private byte memoizedIsInitialized = -1;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (alarmId_ != null) {
+                output.writeMessage(1, getAlarmId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
+            }
+            if (kpiList_ != null) {
+                output.writeMessage(3, getKpiList());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (subsId_ != null) {
-        output.writeMessage(1, getSubsId());
-      }
-      if (kpiId_ != null) {
-        output.writeMessage(2, getKpiId());
-      }
-      if (samplingDurationS_ != 0F) {
-        output.writeFloat(3, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
-        output.writeFloat(4, samplingIntervalS_);
-      }
-      if (startTimestamp_ != null) {
-        output.writeMessage(5, getStartTimestamp());
-      }
-      if (endTimestamp_ != null) {
-        output.writeMessage(6, getEndTimestamp());
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (alarmId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getAlarmId());
+            }
+            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
+                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
+            }
+            if (kpiList_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKpiList());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (subsId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSubsId());
-      }
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiId());
-      }
-      if (samplingDurationS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, samplingDurationS_);
-      }
-      if (samplingIntervalS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(4, samplingIntervalS_);
-      }
-      if (startTimestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getStartTimestamp());
-      }
-      if (endTimestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getEndTimestamp());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof monitoring.Monitoring.AlarmResponse)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.AlarmResponse other = (monitoring.Monitoring.AlarmResponse) obj;
+            if (hasAlarmId() != other.hasAlarmId())
+                return false;
+            if (hasAlarmId()) {
+                if (!getAlarmId().equals(other.getAlarmId()))
+                    return false;
+            }
+            if (!getText().equals(other.getText()))
+                return false;
+            if (hasKpiList() != other.hasKpiList())
+                return false;
+            if (hasKpiList()) {
+                if (!getKpiList().equals(other.getKpiList()))
+                    return false;
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.SubsDescriptor)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.SubsDescriptor other = (monitoring.Monitoring.SubsDescriptor) obj;
-
-      if (hasSubsId() != other.hasSubsId()) return false;
-      if (hasSubsId()) {
-        if (!getSubsId()
-            .equals(other.getSubsId())) return false;
-      }
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (java.lang.Float.floatToIntBits(getSamplingDurationS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingDurationS())) return false;
-      if (java.lang.Float.floatToIntBits(getSamplingIntervalS())
-          != java.lang.Float.floatToIntBits(
-              other.getSamplingIntervalS())) return false;
-      if (hasStartTimestamp() != other.hasStartTimestamp()) return false;
-      if (hasStartTimestamp()) {
-        if (!getStartTimestamp()
-            .equals(other.getStartTimestamp())) return false;
-      }
-      if (hasEndTimestamp() != other.hasEndTimestamp()) return false;
-      if (hasEndTimestamp()) {
-        if (!getEndTimestamp()
-            .equals(other.getEndTimestamp())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasAlarmId()) {
+                hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
+                hash = (53 * hash) + getAlarmId().hashCode();
+            }
+            hash = (37 * hash) + TEXT_FIELD_NUMBER;
+            hash = (53 * hash) + getText().hashCode();
+            if (hasKpiList()) {
+                hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
+                hash = (53 * hash) + getKpiList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSubsId()) {
-        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsId().hashCode();
-      }
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      hash = (37 * hash) + SAMPLING_DURATION_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingDurationS());
-      hash = (37 * hash) + SAMPLING_INTERVAL_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSamplingIntervalS());
-      if (hasStartTimestamp()) {
-        hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getStartTimestamp().hashCode();
-      }
-      if (hasEndTimestamp()) {
-        hash = (37 * hash) + END_TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getEndTimestamp().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.SubsDescriptor prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.SubsDescriptor}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsDescriptor)
-        monitoring.Monitoring.SubsDescriptorOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsDescriptor.class, monitoring.Monitoring.SubsDescriptor.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.SubsDescriptor.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        samplingDurationS_ = 0F;
-
-        samplingIntervalS_ = 0F;
-
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = null;
-        } else {
-          startTimestamp_ = null;
-          startTimestampBuilder_ = null;
-        }
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = null;
-        } else {
-          endTimestamp_ = null;
-          endTimestampBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsDescriptor.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor build() {
-        monitoring.Monitoring.SubsDescriptor result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsDescriptor buildPartial() {
-        monitoring.Monitoring.SubsDescriptor result = new monitoring.Monitoring.SubsDescriptor(this);
-        if (subsIdBuilder_ == null) {
-          result.subsId_ = subsId_;
-        } else {
-          result.subsId_ = subsIdBuilder_.build();
-        }
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        result.samplingDurationS_ = samplingDurationS_;
-        result.samplingIntervalS_ = samplingIntervalS_;
-        if (startTimestampBuilder_ == null) {
-          result.startTimestamp_ = startTimestamp_;
-        } else {
-          result.startTimestamp_ = startTimestampBuilder_.build();
-        }
-        if (endTimestampBuilder_ == null) {
-          result.endTimestamp_ = endTimestamp_;
-        } else {
-          result.endTimestamp_ = endTimestampBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsDescriptor) {
-          return mergeFrom((monitoring.Monitoring.SubsDescriptor)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubsDescriptor other) {
-        if (other == monitoring.Monitoring.SubsDescriptor.getDefaultInstance()) return this;
-        if (other.hasSubsId()) {
-          mergeSubsId(other.getSubsId());
-        }
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.getSamplingDurationS() != 0F) {
-          setSamplingDurationS(other.getSamplingDurationS());
-        }
-        if (other.getSamplingIntervalS() != 0F) {
-          setSamplingIntervalS(other.getSamplingIntervalS());
-        }
-        if (other.hasStartTimestamp()) {
-          mergeStartTimestamp(other.getStartTimestamp());
-        }
-        if (other.hasEndTimestamp()) {
-          mergeEndTimestamp(other.getEndTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubsDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.SubscriptionID subsId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return Whether the subsId field is set.
-       */
-      public boolean hasSubsId() {
-        return subsIdBuilder_ != null || subsId_ != null;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return The subsId.
-       */
-      public monitoring.Monitoring.SubscriptionID getSubsId() {
-        if (subsIdBuilder_ == null) {
-          return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        } else {
-          return subsIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          subsId_ = value;
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(
-          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsIdBuilder_ == null) {
-          subsId_ = builderForValue.build();
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (subsId_ != null) {
-            subsId_ =
-              monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
-          } else {
-            subsId_ = value;
-          }
-          onChanged();
-        } else {
-          subsIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder clearSubsId() {
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-          onChanged();
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-        
-        onChanged();
-        return getSubsIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-        if (subsIdBuilder_ != null) {
-          return subsIdBuilder_.getMessageOrBuilder();
-        } else {
-          return subsId_ == null ?
-              monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
-          getSubsIdFieldBuilder() {
-        if (subsIdBuilder_ == null) {
-          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
-                  getSubsId(),
-                  getParentForChildren(),
-                  isClean());
-          subsId_ = null;
-        }
-        return subsIdBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private float samplingDurationS_ ;
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @return The samplingDurationS.
-       */
-      @java.lang.Override
-      public float getSamplingDurationS() {
-        return samplingDurationS_;
-      }
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @param value The samplingDurationS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingDurationS(float value) {
-        
-        samplingDurationS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float sampling_duration_s = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingDurationS() {
-        
-        samplingDurationS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float samplingIntervalS_ ;
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @return The samplingIntervalS.
-       */
-      @java.lang.Override
-      public float getSamplingIntervalS() {
-        return samplingIntervalS_;
-      }
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @param value The samplingIntervalS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSamplingIntervalS(float value) {
-        
-        samplingIntervalS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float sampling_interval_s = 4;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSamplingIntervalS() {
-        
-        samplingIntervalS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private context.ContextOuterClass.Timestamp startTimestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> startTimestampBuilder_;
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       * @return Whether the startTimestamp field is set.
-       */
-      public boolean hasStartTimestamp() {
-        return startTimestampBuilder_ != null || startTimestamp_ != null;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       * @return The startTimestamp.
-       */
-      public context.ContextOuterClass.Timestamp getStartTimestamp() {
-        if (startTimestampBuilder_ == null) {
-          return startTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-        } else {
-          return startTimestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public Builder setStartTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (startTimestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          startTimestamp_ = value;
-          onChanged();
-        } else {
-          startTimestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public Builder setStartTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          startTimestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public Builder mergeStartTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (startTimestampBuilder_ == null) {
-          if (startTimestamp_ != null) {
-            startTimestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(startTimestamp_).mergeFrom(value).buildPartial();
-          } else {
-            startTimestamp_ = value;
-          }
-          onChanged();
-        } else {
-          startTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public Builder clearStartTimestamp() {
-        if (startTimestampBuilder_ == null) {
-          startTimestamp_ = null;
-          onChanged();
-        } else {
-          startTimestamp_ = null;
-          startTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getStartTimestampBuilder() {
-        
-        onChanged();
-        return getStartTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getStartTimestampOrBuilder() {
-        if (startTimestampBuilder_ != null) {
-          return startTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return startTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : startTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples since X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp start_timestamp = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getStartTimestampFieldBuilder() {
-        if (startTimestampBuilder_ == null) {
-          startTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getStartTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          startTimestamp_ = null;
-        }
-        return startTimestampBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp endTimestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> endTimestampBuilder_;
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       * @return Whether the endTimestamp field is set.
-       */
-      public boolean hasEndTimestamp() {
-        return endTimestampBuilder_ != null || endTimestamp_ != null;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       * @return The endTimestamp.
-       */
-      public context.ContextOuterClass.Timestamp getEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          return endTimestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        } else {
-          return endTimestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public Builder setEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          endTimestamp_ = value;
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public Builder setEndTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          endTimestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public Builder mergeEndTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (endTimestampBuilder_ == null) {
-          if (endTimestamp_ != null) {
-            endTimestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(endTimestamp_).mergeFrom(value).buildPartial();
-          } else {
-            endTimestamp_ = value;
-          }
-          onChanged();
-        } else {
-          endTimestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public Builder clearEndTimestamp() {
-        if (endTimestampBuilder_ == null) {
-          endTimestamp_ = null;
-          onChanged();
-        } else {
-          endTimestamp_ = null;
-          endTimestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getEndTimestampBuilder() {
-        
-        onChanged();
-        return getEndTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getEndTimestampOrBuilder() {
-        if (endTimestampBuilder_ != null) {
-          return endTimestampBuilder_.getMessageOrBuilder();
-        } else {
-          return endTimestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : endTimestamp_;
-        }
-      }
-      /**
-       * <pre>
-       * used when you want something like "get the samples until X date/time"
-       * </pre>
-       *
-       * <code>.context.Timestamp end_timestamp = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getEndTimestampFieldBuilder() {
-        if (endTimestampBuilder_ == null) {
-          endTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getEndTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          endTimestamp_ = null;
-        }
-        return endTimestampBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsDescriptor)
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubsDescriptor)
-    private static final monitoring.Monitoring.SubsDescriptor DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsDescriptor();
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static monitoring.Monitoring.SubsDescriptor getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<SubsDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<SubsDescriptor>() {
-      @java.lang.Override
-      public SubsDescriptor parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsDescriptor(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SubsDescriptor> parser() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SubsDescriptor> getParserForType() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.SubsDescriptor getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-  }
+        public static monitoring.Monitoring.AlarmResponse parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  public interface SubscriptionIDOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubscriptionID)
-      com.google.protobuf.MessageOrBuilder {
+        public static monitoring.Monitoring.AlarmResponse parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    boolean hasSubsId();
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     * @return The subsId.
-     */
-    context.ContextOuterClass.Uuid getSubsId();
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.SubscriptionID}
-   */
-  public static final class SubscriptionID extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubscriptionID)
-      SubscriptionIDOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SubscriptionID.newBuilder() to construct.
-    private SubscriptionID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SubscriptionID() {
-    }
+        public static monitoring.Monitoring.AlarmResponse parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SubscriptionID();
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SubscriptionID(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (subsId_ != null) {
-                subBuilder = subsId_.toBuilder();
-              }
-              subsId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(subsId_);
-                subsId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
-    }
+        public static Builder newBuilder(monitoring.Monitoring.AlarmResponse prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    public static final int SUBS_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid subsId_;
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSubsId() {
-      return subsId_ != null;
-    }
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     * @return The subsId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getSubsId() {
-      return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
-    }
-    /**
-     * <code>.context.Uuid subs_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-      return getSubsId();
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * Protobuf type {@code monitoring.AlarmResponse}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.AlarmResponse)
+        monitoring.Monitoring.AlarmResponseOrBuilder {
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (subsId_ != null) {
-        output.writeMessage(1, getSubsId());
-      }
-      unknownFields.writeTo(output);
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (subsId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSubsId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmResponse.class, monitoring.Monitoring.AlarmResponse.Builder.class);
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.SubscriptionID)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.SubscriptionID other = (monitoring.Monitoring.SubscriptionID) obj;
-
-      if (hasSubsId() != other.hasSubsId()) return false;
-      if (hasSubsId()) {
-        if (!getSubsId()
-            .equals(other.getSubsId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSubsId()) {
-        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubscriptionID parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                text_ = "";
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
+                    kpiListBuilder_ = null;
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.SubscriptionID 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
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.SubscriptionID}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubscriptionID)
-        monitoring.Monitoring.SubscriptionIDOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubscriptionID.class, monitoring.Monitoring.SubscriptionID.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.SubscriptionID.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubscriptionID_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubscriptionID.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID build() {
-        monitoring.Monitoring.SubscriptionID result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubscriptionID buildPartial() {
-        monitoring.Monitoring.SubscriptionID result = new monitoring.Monitoring.SubscriptionID(this);
-        if (subsIdBuilder_ == null) {
-          result.subsId_ = subsId_;
-        } else {
-          result.subsId_ = subsIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubscriptionID) {
-          return mergeFrom((monitoring.Monitoring.SubscriptionID)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubscriptionID other) {
-        if (other == monitoring.Monitoring.SubscriptionID.getDefaultInstance()) return this;
-        if (other.hasSubsId()) {
-          mergeSubsId(other.getSubsId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubscriptionID parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubscriptionID) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid subsId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> subsIdBuilder_;
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       * @return Whether the subsId field is set.
-       */
-      public boolean hasSubsId() {
-        return subsIdBuilder_ != null || subsId_ != null;
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       * @return The subsId.
-       */
-      public context.ContextOuterClass.Uuid getSubsId() {
-        if (subsIdBuilder_ == null) {
-          return subsId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
-        } else {
-          return subsIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public Builder setSubsId(context.ContextOuterClass.Uuid value) {
-        if (subsIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          subsId_ = value;
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public Builder setSubsId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (subsIdBuilder_ == null) {
-          subsId_ = builderForValue.build();
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public Builder mergeSubsId(context.ContextOuterClass.Uuid value) {
-        if (subsIdBuilder_ == null) {
-          if (subsId_ != null) {
-            subsId_ =
-              context.ContextOuterClass.Uuid.newBuilder(subsId_).mergeFrom(value).buildPartial();
-          } else {
-            subsId_ = value;
-          }
-          onChanged();
-        } else {
-          subsIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public Builder clearSubsId() {
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-          onChanged();
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getSubsIdBuilder() {
-        
-        onChanged();
-        return getSubsIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getSubsIdOrBuilder() {
-        if (subsIdBuilder_ != null) {
-          return subsIdBuilder_.getMessageOrBuilder();
-        } else {
-          return subsId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : subsId_;
-        }
-      }
-      /**
-       * <code>.context.Uuid subs_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getSubsIdFieldBuilder() {
-        if (subsIdBuilder_ == null) {
-          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getSubsId(),
-                  getParentForChildren(),
-                  isClean());
-          subsId_ = null;
-        }
-        return subsIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.SubscriptionID)
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmResponse getDefaultInstanceForType() {
+                return monitoring.Monitoring.AlarmResponse.getDefaultInstance();
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubscriptionID)
-    private static final monitoring.Monitoring.SubscriptionID DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubscriptionID();
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmResponse build() {
+                monitoring.Monitoring.AlarmResponse result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    public static monitoring.Monitoring.SubscriptionID getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmResponse buildPartial() {
+                monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    private static final com.google.protobuf.Parser<SubscriptionID>
-        PARSER = new com.google.protobuf.AbstractParser<SubscriptionID>() {
-      @java.lang.Override
-      public SubscriptionID parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubscriptionID(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SubscriptionID> parser() {
-      return PARSER;
-    }
+            private void buildPartial0(monitoring.Monitoring.AlarmResponse result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.alarmId_ = alarmIdBuilder_ == null ? alarmId_ : alarmIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.text_ = text_;
+                }
+                if (((from_bitField0_ & 0x00000004) != 0)) {
+                    result.kpiList_ = kpiListBuilder_ == null ? kpiList_ : kpiListBuilder_.build();
+                }
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SubscriptionID> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.AlarmResponse) {
+                    return mergeFrom((monitoring.Monitoring.AlarmResponse) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            public Builder mergeFrom(monitoring.Monitoring.AlarmResponse other) {
+                if (other == monitoring.Monitoring.AlarmResponse.getDefaultInstance())
+                    return this;
+                if (other.hasAlarmId()) {
+                    mergeAlarmId(other.getAlarmId());
+                }
+                if (!other.getText().isEmpty()) {
+                    text_ = other.text_;
+                    bitField0_ |= 0x00000002;
+                    onChanged();
+                }
+                if (other.hasKpiList()) {
+                    mergeKpiList(other.getKpiList());
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-  }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-  public interface SubsResponseOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsResponse)
-      com.google.protobuf.MessageOrBuilder {
+            @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(getAlarmIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    text_ = input.readStringRequireUtf8();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            case 26:
+                                {
+                                    input.readMessage(getKpiListFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000004;
+                                    break;
+                                }
+                            // case 26
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    boolean hasSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    monitoring.Monitoring.SubscriptionID getSubsId();
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder();
+            private int bitField0_;
 
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     * @return Whether the kpiList field is set.
-     */
-    boolean hasKpiList();
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     * @return The kpiList.
-     */
-    monitoring.Monitoring.KpiList getKpiList();
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     */
-    monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.SubsResponse}
-   */
-  public static final class SubsResponse extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsResponse)
-      SubsResponseOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SubsResponse.newBuilder() to construct.
-    private SubsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SubsResponse() {
-    }
+            private monitoring.Monitoring.AlarmID alarmId_;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SubsResponse();
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SubsResponse(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.SubscriptionID.Builder subBuilder = null;
-              if (subsId_ != null) {
-                subBuilder = subsId_.toBuilder();
-              }
-              subsId_ = input.readMessage(monitoring.Monitoring.SubscriptionID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(subsId_);
-                subsId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              monitoring.Monitoring.KpiList.Builder subBuilder = null;
-              if (kpiList_ != null) {
-                subBuilder = kpiList_.toBuilder();
-              }
-              kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiList_);
-                kpiList_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return Whether the alarmId field is set.
+             */
+            public boolean hasAlarmId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             * @return The alarmId.
+             */
+            public monitoring.Monitoring.AlarmID getAlarmId() {
+                if (alarmIdBuilder_ == null) {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                } else {
+                    return alarmIdBuilder_.getMessage();
+                }
+            }
 
-    public static final int SUBS_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.SubscriptionID subsId_;
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return Whether the subsId field is set.
-     */
-    @java.lang.Override
-    public boolean hasSubsId() {
-      return subsId_ != null;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     * @return The subsId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionID getSubsId() {
-      return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-    }
-    /**
-     * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-      return getSubsId();
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    alarmId_ = value;
+                } else {
+                    alarmIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static final int KPI_LIST_FIELD_NUMBER = 2;
-    private monitoring.Monitoring.KpiList kpiList_;
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     * @return Whether the kpiList field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiList() {
-      return kpiList_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     * @return The kpiList.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiList getKpiList() {
-      return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-    }
-    /**
-     * <code>.monitoring.KpiList kpi_list = 2;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-      return getKpiList();
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder setAlarmId(monitoring.Monitoring.AlarmID.Builder builderForValue) {
+                if (alarmIdBuilder_ == null) {
+                    alarmId_ = builderForValue.build();
+                } else {
+                    alarmIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
+                if (alarmIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && alarmId_ != null && alarmId_ != monitoring.Monitoring.AlarmID.getDefaultInstance()) {
+                        getAlarmIdBuilder().mergeFrom(value);
+                    } else {
+                        alarmId_ = value;
+                    }
+                } else {
+                    alarmIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public Builder clearAlarmId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                alarmId_ = null;
+                if (alarmIdBuilder_ != null) {
+                    alarmIdBuilder_.dispose();
+                    alarmIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (subsId_ != null) {
-        output.writeMessage(1, getSubsId());
-      }
-      if (kpiList_ != null) {
-        output.writeMessage(2, getKpiList());
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getAlarmIdFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (subsId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getSubsId());
-      }
-      if (kpiList_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getKpiList());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
+                if (alarmIdBuilder_ != null) {
+                    return alarmIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.SubsResponse)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.SubsResponse other = (monitoring.Monitoring.SubsResponse) obj;
-
-      if (hasSubsId() != other.hasSubsId()) return false;
-      if (hasSubsId()) {
-        if (!getSubsId()
-            .equals(other.getSubsId())) return false;
-      }
-      if (hasKpiList() != other.hasKpiList()) return false;
-      if (hasKpiList()) {
-        if (!getKpiList()
-            .equals(other.getKpiList())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>.monitoring.AlarmID alarm_id = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> getAlarmIdFieldBuilder() {
+                if (alarmIdBuilder_ == null) {
+                    alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(getAlarmId(), getParentForChildren(), isClean());
+                    alarmId_ = null;
+                }
+                return alarmIdBuilder_;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasSubsId()) {
-        hash = (37 * hash) + SUBS_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsId().hashCode();
-      }
-      if (hasKpiList()) {
-        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            private java.lang.Object text_ = "";
+
+            /**
+             * <code>string text = 2;</code>
+             * @return The text.
+             */
+            public java.lang.String getText() {
+                java.lang.Object ref = text_;
+                if (!(ref instanceof java.lang.String)) {
+                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+                    java.lang.String s = bs.toStringUtf8();
+                    text_ = s;
+                    return s;
+                } else {
+                    return (java.lang.String) ref;
+                }
+            }
 
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsResponse parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsResponse parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>string text = 2;</code>
+             * @return The bytes for text.
+             */
+            public com.google.protobuf.ByteString getTextBytes() {
+                java.lang.Object ref = text_;
+                if (ref instanceof String) {
+                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+                    text_ = b;
+                    return b;
+                } else {
+                    return (com.google.protobuf.ByteString) ref;
+                }
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.SubsResponse prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>string text = 2;</code>
+             * @param value The text to set.
+             * @return This builder for chaining.
+             */
+            public Builder setText(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                text_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.SubsResponse}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsResponse)
-        monitoring.Monitoring.SubsResponseOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsResponse.class, monitoring.Monitoring.SubsResponse.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.SubsResponse.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-        if (kpiListBuilder_ == null) {
-          kpiList_ = null;
-        } else {
-          kpiList_ = null;
-          kpiListBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsResponse_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsResponse.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsResponse build() {
-        monitoring.Monitoring.SubsResponse result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsResponse buildPartial() {
-        monitoring.Monitoring.SubsResponse result = new monitoring.Monitoring.SubsResponse(this);
-        if (subsIdBuilder_ == null) {
-          result.subsId_ = subsId_;
-        } else {
-          result.subsId_ = subsIdBuilder_.build();
-        }
-        if (kpiListBuilder_ == null) {
-          result.kpiList_ = kpiList_;
-        } else {
-          result.kpiList_ = kpiListBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsResponse) {
-          return mergeFrom((monitoring.Monitoring.SubsResponse)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubsResponse other) {
-        if (other == monitoring.Monitoring.SubsResponse.getDefaultInstance()) return this;
-        if (other.hasSubsId()) {
-          mergeSubsId(other.getSubsId());
-        }
-        if (other.hasKpiList()) {
-          mergeKpiList(other.getKpiList());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubsResponse parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsResponse) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.SubscriptionID subsId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> subsIdBuilder_;
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return Whether the subsId field is set.
-       */
-      public boolean hasSubsId() {
-        return subsIdBuilder_ != null || subsId_ != null;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       * @return The subsId.
-       */
-      public monitoring.Monitoring.SubscriptionID getSubsId() {
-        if (subsIdBuilder_ == null) {
-          return subsId_ == null ? monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        } else {
-          return subsIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          subsId_ = value;
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder setSubsId(
-          monitoring.Monitoring.SubscriptionID.Builder builderForValue) {
-        if (subsIdBuilder_ == null) {
-          subsId_ = builderForValue.build();
-          onChanged();
-        } else {
-          subsIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder mergeSubsId(monitoring.Monitoring.SubscriptionID value) {
-        if (subsIdBuilder_ == null) {
-          if (subsId_ != null) {
-            subsId_ =
-              monitoring.Monitoring.SubscriptionID.newBuilder(subsId_).mergeFrom(value).buildPartial();
-          } else {
-            subsId_ = value;
-          }
-          onChanged();
-        } else {
-          subsIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public Builder clearSubsId() {
-        if (subsIdBuilder_ == null) {
-          subsId_ = null;
-          onChanged();
-        } else {
-          subsId_ = null;
-          subsIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionID.Builder getSubsIdBuilder() {
-        
-        onChanged();
-        return getSubsIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      public monitoring.Monitoring.SubscriptionIDOrBuilder getSubsIdOrBuilder() {
-        if (subsIdBuilder_ != null) {
-          return subsIdBuilder_.getMessageOrBuilder();
-        } else {
-          return subsId_ == null ?
-              monitoring.Monitoring.SubscriptionID.getDefaultInstance() : subsId_;
-        }
-      }
-      /**
-       * <code>.monitoring.SubscriptionID subs_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder> 
-          getSubsIdFieldBuilder() {
-        if (subsIdBuilder_ == null) {
-          subsIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubscriptionID.Builder, monitoring.Monitoring.SubscriptionIDOrBuilder>(
-                  getSubsId(),
-                  getParentForChildren(),
-                  isClean());
-          subsId_ = null;
-        }
-        return subsIdBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiList kpiList_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       * @return Whether the kpiList field is set.
-       */
-      public boolean hasKpiList() {
-        return kpiListBuilder_ != null || kpiList_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       * @return The kpiList.
-       */
-      public monitoring.Monitoring.KpiList getKpiList() {
-        if (kpiListBuilder_ == null) {
-          return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-        } else {
-          return kpiListBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public Builder setKpiList(monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiList_ = value;
-          onChanged();
-        } else {
-          kpiListBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public Builder setKpiList(
-          monitoring.Monitoring.KpiList.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiListBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
-          if (kpiList_ != null) {
-            kpiList_ =
-              monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
-          } else {
-            kpiList_ = value;
-          }
-          onChanged();
-        } else {
-          kpiListBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public Builder clearKpiList() {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = null;
-          onChanged();
-        } else {
-          kpiList_ = null;
-          kpiListBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-        
-        onChanged();
-        return getKpiListFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-        if (kpiListBuilder_ != null) {
-          return kpiListBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiList_ == null ?
-              monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> 
-          getKpiListFieldBuilder() {
-        if (kpiListBuilder_ == null) {
-          kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(
-                  getKpiList(),
-                  getParentForChildren(),
-                  isClean());
-          kpiList_ = null;
-        }
-        return kpiListBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsResponse)
-    }
+            /**
+             * <code>string text = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearText() {
+                text_ = getDefaultInstance().getText();
+                bitField0_ = (bitField0_ & ~0x00000002);
+                onChanged();
+                return this;
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubsResponse)
-    private static final monitoring.Monitoring.SubsResponse DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsResponse();
-    }
+            /**
+             * <code>string text = 2;</code>
+             * @param value The bytes for text to set.
+             * @return This builder for chaining.
+             */
+            public Builder setTextBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                text_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
 
-    public static monitoring.Monitoring.SubsResponse getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            private monitoring.Monitoring.KpiList kpiList_;
 
-    private static final com.google.protobuf.Parser<SubsResponse>
-        PARSER = new com.google.protobuf.AbstractParser<SubsResponse>() {
-      @java.lang.Override
-      public SubsResponse parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsResponse(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SubsResponse> parser() {
-      return PARSER;
-    }
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SubsResponse> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             * @return Whether the kpiList field is set.
+             */
+            public boolean hasKpiList() {
+                return ((bitField0_ & 0x00000004) != 0);
+            }
 
-    @java.lang.Override
-    public monitoring.Monitoring.SubsResponse getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             * @return The kpiList.
+             */
+            public monitoring.Monitoring.KpiList getKpiList() {
+                if (kpiListBuilder_ == null) {
+                    return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+                } else {
+                    return kpiListBuilder_.getMessage();
+                }
+            }
 
-  }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public Builder setKpiList(monitoring.Monitoring.KpiList value) {
+                if (kpiListBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    kpiList_ = value;
+                } else {
+                    kpiListBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-  public interface SubsListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.SubsList)
-      com.google.protobuf.MessageOrBuilder {
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public Builder setKpiList(monitoring.Monitoring.KpiList.Builder builderForValue) {
+                if (kpiListBuilder_ == null) {
+                    kpiList_ = builderForValue.build();
+                } else {
+                    kpiListBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.SubsDescriptor> 
-        getSubsDescriptorList();
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index);
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    int getSubsDescriptorCount();
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> 
-        getSubsDescriptorOrBuilderList();
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code monitoring.SubsList}
-   */
-  public static final class SubsList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.SubsList)
-      SubsListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use SubsList.newBuilder() to construct.
-    private SubsList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private SubsList() {
-      subsDescriptor_ = java.util.Collections.emptyList();
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
+                if (kpiListBuilder_ == null) {
+                    if (((bitField0_ & 0x00000004) != 0) && kpiList_ != null && kpiList_ != monitoring.Monitoring.KpiList.getDefaultInstance()) {
+                        getKpiListBuilder().mergeFrom(value);
+                    } else {
+                        kpiList_ = value;
+                    }
+                } else {
+                    kpiListBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SubsList();
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public Builder clearKpiList() {
+                bitField0_ = (bitField0_ & ~0x00000004);
+                kpiList_ = null;
+                if (kpiListBuilder_ != null) {
+                    kpiListBuilder_.dispose();
+                    kpiListBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private SubsList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                subsDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.SubsDescriptor>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              subsDescriptor_.add(
-                  input.readMessage(monitoring.Monitoring.SubsDescriptor.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
+                bitField0_ |= 0x00000004;
+                onChanged();
+                return getKpiListFieldBuilder().getBuilder();
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class);
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
+                if (kpiListBuilder_ != null) {
+                    return kpiListBuilder_.getMessageOrBuilder();
+                } else {
+                    return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
+                }
+            }
 
-    public static final int SUBS_DESCRIPTOR_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_;
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.SubsDescriptor> getSubsDescriptorList() {
-      return subsDescriptor_;
-    }
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> 
-        getSubsDescriptorOrBuilderList() {
-      return subsDescriptor_;
-    }
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public int getSubsDescriptorCount() {
-      return subsDescriptor_.size();
-    }
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) {
-      return subsDescriptor_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(
-        int index) {
-      return subsDescriptor_.get(index);
-    }
+            /**
+             * <code>.monitoring.KpiList kpi_list = 3;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> getKpiListFieldBuilder() {
+                if (kpiListBuilder_ == null) {
+                    kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(getKpiList(), getParentForChildren(), isClean());
+                    kpiList_ = null;
+                }
+                return kpiListBuilder_;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.AlarmResponse)
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < subsDescriptor_.size(); i++) {
-        output.writeMessage(1, subsDescriptor_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        // @@protoc_insertion_point(class_scope:monitoring.AlarmResponse)
+        private static final monitoring.Monitoring.AlarmResponse DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < subsDescriptor_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, subsDescriptor_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmResponse();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.SubsList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.SubsList other = (monitoring.Monitoring.SubsList) obj;
-
-      if (!getSubsDescriptorList()
-          .equals(other.getSubsDescriptorList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmResponse getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getSubsDescriptorCount() > 0) {
-        hash = (37 * hash) + SUBS_DESCRIPTOR_FIELD_NUMBER;
-        hash = (53 * hash) + getSubsDescriptorList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        private static final com.google.protobuf.Parser<AlarmResponse> PARSER = new com.google.protobuf.AbstractParser<AlarmResponse>() {
 
-    public static monitoring.Monitoring.SubsList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.SubsList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public AlarmResponse 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();
+            }
+        };
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.SubsList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static com.google.protobuf.Parser<AlarmResponse> parser() {
+            return PARSER;
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.SubsList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.SubsList)
-        monitoring.Monitoring.SubsListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.SubsList.class, monitoring.Monitoring.SubsList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.SubsList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getSubsDescriptorFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (subsDescriptorBuilder_ == null) {
-          subsDescriptor_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          subsDescriptorBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_SubsList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsList getDefaultInstanceForType() {
-        return monitoring.Monitoring.SubsList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsList build() {
-        monitoring.Monitoring.SubsList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.SubsList buildPartial() {
-        monitoring.Monitoring.SubsList result = new monitoring.Monitoring.SubsList(this);
-        int from_bitField0_ = bitField0_;
-        if (subsDescriptorBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            subsDescriptor_ = java.util.Collections.unmodifiableList(subsDescriptor_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.subsDescriptor_ = subsDescriptor_;
-        } else {
-          result.subsDescriptor_ = subsDescriptorBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.SubsList) {
-          return mergeFrom((monitoring.Monitoring.SubsList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.SubsList other) {
-        if (other == monitoring.Monitoring.SubsList.getDefaultInstance()) return this;
-        if (subsDescriptorBuilder_ == null) {
-          if (!other.subsDescriptor_.isEmpty()) {
-            if (subsDescriptor_.isEmpty()) {
-              subsDescriptor_ = other.subsDescriptor_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureSubsDescriptorIsMutable();
-              subsDescriptor_.addAll(other.subsDescriptor_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.subsDescriptor_.isEmpty()) {
-            if (subsDescriptorBuilder_.isEmpty()) {
-              subsDescriptorBuilder_.dispose();
-              subsDescriptorBuilder_ = null;
-              subsDescriptor_ = other.subsDescriptor_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              subsDescriptorBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getSubsDescriptorFieldBuilder() : null;
-            } else {
-              subsDescriptorBuilder_.addAllMessages(other.subsDescriptor_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.SubsList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.SubsList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.SubsDescriptor> subsDescriptor_ =
-        java.util.Collections.emptyList();
-      private void ensureSubsDescriptorIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          subsDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.SubsDescriptor>(subsDescriptor_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> subsDescriptorBuilder_;
-
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.SubsDescriptor> getSubsDescriptorList() {
-        if (subsDescriptorBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(subsDescriptor_);
-        } else {
-          return subsDescriptorBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public int getSubsDescriptorCount() {
-        if (subsDescriptorBuilder_ == null) {
-          return subsDescriptor_.size();
-        } else {
-          return subsDescriptorBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(int index) {
-        if (subsDescriptorBuilder_ == null) {
-          return subsDescriptor_.get(index);
-        } else {
-          return subsDescriptorBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder setSubsDescriptor(
-          int index, monitoring.Monitoring.SubsDescriptor value) {
-        if (subsDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.set(index, value);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder setSubsDescriptor(
-          int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
-        if (subsDescriptorBuilder_ == null) {
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder addSubsDescriptor(monitoring.Monitoring.SubsDescriptor value) {
-        if (subsDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.add(value);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder addSubsDescriptor(
-          int index, monitoring.Monitoring.SubsDescriptor value) {
-        if (subsDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.add(index, value);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder addSubsDescriptor(
-          monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
-        if (subsDescriptorBuilder_ == null) {
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.add(builderForValue.build());
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder addSubsDescriptor(
-          int index, monitoring.Monitoring.SubsDescriptor.Builder builderForValue) {
-        if (subsDescriptorBuilder_ == null) {
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder addAllSubsDescriptor(
-          java.lang.Iterable<? extends monitoring.Monitoring.SubsDescriptor> values) {
-        if (subsDescriptorBuilder_ == null) {
-          ensureSubsDescriptorIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, subsDescriptor_);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder clearSubsDescriptor() {
-        if (subsDescriptorBuilder_ == null) {
-          subsDescriptor_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public Builder removeSubsDescriptor(int index) {
-        if (subsDescriptorBuilder_ == null) {
-          ensureSubsDescriptorIsMutable();
-          subsDescriptor_.remove(index);
-          onChanged();
-        } else {
-          subsDescriptorBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.SubsDescriptor.Builder getSubsDescriptorBuilder(
-          int index) {
-        return getSubsDescriptorFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.SubsDescriptorOrBuilder getSubsDescriptorOrBuilder(
-          int index) {
-        if (subsDescriptorBuilder_ == null) {
-          return subsDescriptor_.get(index);  } else {
-          return subsDescriptorBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.SubsDescriptorOrBuilder> 
-           getSubsDescriptorOrBuilderList() {
-        if (subsDescriptorBuilder_ != null) {
-          return subsDescriptorBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(subsDescriptor_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder() {
-        return getSubsDescriptorFieldBuilder().addBuilder(
-            monitoring.Monitoring.SubsDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.SubsDescriptor.Builder addSubsDescriptorBuilder(
-          int index) {
-        return getSubsDescriptorFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.SubsDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.SubsDescriptor subs_descriptor = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.SubsDescriptor.Builder> 
-           getSubsDescriptorBuilderList() {
-        return getSubsDescriptorFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder> 
-          getSubsDescriptorFieldBuilder() {
-        if (subsDescriptorBuilder_ == null) {
-          subsDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsDescriptor.Builder, monitoring.Monitoring.SubsDescriptorOrBuilder>(
-                  subsDescriptor_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          subsDescriptor_ = null;
-        }
-        return subsDescriptorBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.SubsList)
-    }
+        @java.lang.Override
+        public com.google.protobuf.Parser<AlarmResponse> getParserForType() {
+            return PARSER;
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.SubsList)
-    private static final monitoring.Monitoring.SubsList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.SubsList();
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmResponse getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    public static monitoring.Monitoring.SubsList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    public interface AlarmListOrBuilder extends // @@protoc_insertion_point(interface_extends:monitoring.AlarmList)
+    com.google.protobuf.MessageOrBuilder {
 
-    private static final com.google.protobuf.Parser<SubsList>
-        PARSER = new com.google.protobuf.AbstractParser<SubsList>() {
-      @java.lang.Override
-      public SubsList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SubsList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<SubsList> parser() {
-      return PARSER;
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        java.util.List<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptorList();
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<SubsList> getParserForType() {
-      return PARSER;
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index);
 
-    @java.lang.Override
-    public monitoring.Monitoring.SubsList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        int getAlarmDescriptorCount();
 
-  }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> getAlarmDescriptorOrBuilderList();
 
-  public interface AlarmDescriptorOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmDescriptor)
-      com.google.protobuf.MessageOrBuilder {
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(int index);
+    }
 
     /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    boolean hasAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    monitoring.Monitoring.AlarmID getAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
+     * Protobuf type {@code monitoring.AlarmList}
      */
-    monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
+    public static final class AlarmList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:monitoring.AlarmList)
+    AlarmListOrBuilder {
 
-    /**
-     * <code>string alarm_description = 2;</code>
-     * @return The alarmDescription.
-     */
-    java.lang.String getAlarmDescription();
-    /**
-     * <code>string alarm_description = 2;</code>
-     * @return The bytes for alarmDescription.
-     */
-    com.google.protobuf.ByteString
-        getAlarmDescriptionBytes();
+        private static final long serialVersionUID = 0L;
 
-    /**
-     * <code>string name = 3;</code>
-     * @return The name.
-     */
-    java.lang.String getName();
-    /**
-     * <code>string name = 3;</code>
-     * @return The bytes for name.
-     */
-    com.google.protobuf.ByteString
-        getNameBytes();
+        // Use AlarmList.newBuilder() to construct.
+        private AlarmList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     * @return Whether the kpiId field is set.
-     */
-    boolean hasKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     * @return The kpiId.
-     */
-    monitoring.Monitoring.KpiId getKpiId();
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     */
-    monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder();
+        private AlarmList() {
+            alarmDescriptor_ = java.util.Collections.emptyList();
+        }
 
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     * @return Whether the kpiValueRange field is set.
-     */
-    boolean hasKpiValueRange();
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     * @return The kpiValueRange.
-     */
-    monitoring.Monitoring.KpiValueRange getKpiValueRange();
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     */
-    monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder();
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new AlarmList();
+        }
 
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     * @return Whether the timestamp field is set.
-     */
-    boolean hasTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     * @return The timestamp.
-     */
-    context.ContextOuterClass.Timestamp getTimestamp();
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     */
-    context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmDescriptor}
-   */
-  public static final class AlarmDescriptor extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmDescriptor)
-      AlarmDescriptorOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmDescriptor.newBuilder() to construct.
-    private AlarmDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmDescriptor() {
-      alarmDescription_ = "";
-      name_ = "";
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmDescriptor();
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmDescriptor(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-              if (alarmId_ != null) {
-                subBuilder = alarmId_.toBuilder();
-              }
-              alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(alarmId_);
-                alarmId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              alarmDescription_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              name_ = s;
-              break;
-            }
-            case 34: {
-              monitoring.Monitoring.KpiId.Builder subBuilder = null;
-              if (kpiId_ != null) {
-                subBuilder = kpiId_.toBuilder();
-              }
-              kpiId_ = input.readMessage(monitoring.Monitoring.KpiId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiId_);
-                kpiId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 42: {
-              monitoring.Monitoring.KpiValueRange.Builder subBuilder = null;
-              if (kpiValueRange_ != null) {
-                subBuilder = kpiValueRange_.toBuilder();
-              }
-              kpiValueRange_ = input.readMessage(monitoring.Monitoring.KpiValueRange.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiValueRange_);
-                kpiValueRange_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 50: {
-              context.ContextOuterClass.Timestamp.Builder subBuilder = null;
-              if (timestamp_ != null) {
-                subBuilder = timestamp_.toBuilder();
-              }
-              timestamp_ = input.readMessage(context.ContextOuterClass.Timestamp.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(timestamp_);
-                timestamp_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
-    }
+        public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
-    }
+        @SuppressWarnings("serial")
+        private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_;
 
-    public static final int ALARM_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.AlarmID alarmId_;
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    @java.lang.Override
-    public boolean hasAlarmId() {
-      return alarmId_ != null;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmID getAlarmId() {
-      return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-      return getAlarmId();
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptorList() {
+            return alarmDescriptor_;
+        }
 
-    public static final int ALARM_DESCRIPTION_FIELD_NUMBER = 2;
-    private volatile java.lang.Object alarmDescription_;
-    /**
-     * <code>string alarm_description = 2;</code>
-     * @return The alarmDescription.
-     */
-    @java.lang.Override
-    public java.lang.String getAlarmDescription() {
-      java.lang.Object ref = alarmDescription_;
-      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();
-        alarmDescription_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string alarm_description = 2;</code>
-     * @return The bytes for alarmDescription.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getAlarmDescriptionBytes() {
-      java.lang.Object ref = alarmDescription_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        alarmDescription_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> getAlarmDescriptorOrBuilderList() {
+            return alarmDescriptor_;
+        }
 
-    public static final int NAME_FIELD_NUMBER = 3;
-    private volatile java.lang.Object name_;
-    /**
-     * <code>string name = 3;</code>
-     * @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;
-      }
-    }
-    /**
-     * <code>string name = 3;</code>
-     * @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;
-      }
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public int getAlarmDescriptorCount() {
+            return alarmDescriptor_.size();
+        }
 
-    public static final int KPI_ID_FIELD_NUMBER = 4;
-    private monitoring.Monitoring.KpiId kpiId_;
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     * @return Whether the kpiId field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiId() {
-      return kpiId_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     * @return The kpiId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiId getKpiId() {
-      return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-    }
-    /**
-     * <code>.monitoring.KpiId kpi_id = 4;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-      return getKpiId();
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) {
+            return alarmDescriptor_.get(index);
+        }
 
-    public static final int KPI_VALUE_RANGE_FIELD_NUMBER = 5;
-    private monitoring.Monitoring.KpiValueRange kpiValueRange_;
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     * @return Whether the kpiValueRange field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiValueRange() {
-      return kpiValueRange_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     * @return The kpiValueRange.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
-      return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
-    }
-    /**
-     * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-      return getKpiValueRange();
-    }
+        /**
+         * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+         */
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(int index) {
+            return alarmDescriptor_.get(index);
+        }
 
-    public static final int TIMESTAMP_FIELD_NUMBER = 6;
-    private context.ContextOuterClass.Timestamp timestamp_;
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     * @return Whether the timestamp field is set.
-     */
-    @java.lang.Override
-    public boolean hasTimestamp() {
-      return timestamp_ != null;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     * @return The timestamp.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Timestamp getTimestamp() {
-      return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-    }
-    /**
-     * <code>.context.Timestamp timestamp = 6;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-      return getTimestamp();
-    }
+        private byte memoizedIsInitialized = -1;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < alarmDescriptor_.size(); i++) {
+                output.writeMessage(1, alarmDescriptor_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (alarmId_ != null) {
-        output.writeMessage(1, getAlarmId());
-      }
-      if (!getAlarmDescriptionBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alarmDescription_);
-      }
-      if (!getNameBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
-      }
-      if (kpiId_ != null) {
-        output.writeMessage(4, getKpiId());
-      }
-      if (kpiValueRange_ != null) {
-        output.writeMessage(5, getKpiValueRange());
-      }
-      if (timestamp_ != null) {
-        output.writeMessage(6, getTimestamp());
-      }
-      unknownFields.writeTo(output);
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < alarmDescriptor_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, alarmDescriptor_.get(i));
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (alarmId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getAlarmId());
-      }
-      if (!getAlarmDescriptionBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alarmDescription_);
-      }
-      if (!getNameBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
-      }
-      if (kpiId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(4, getKpiId());
-      }
-      if (kpiValueRange_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(5, getKpiValueRange());
-      }
-      if (timestamp_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, getTimestamp());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof monitoring.Monitoring.AlarmList)) {
+                return super.equals(obj);
+            }
+            monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
+            if (!getAlarmDescriptorList().equals(other.getAlarmDescriptorList()))
+                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 (getAlarmDescriptorCount() > 0) {
+                hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
+                hash = (53 * hash) + getAlarmDescriptorList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.AlarmDescriptor)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.AlarmDescriptor other = (monitoring.Monitoring.AlarmDescriptor) obj;
-
-      if (hasAlarmId() != other.hasAlarmId()) return false;
-      if (hasAlarmId()) {
-        if (!getAlarmId()
-            .equals(other.getAlarmId())) return false;
-      }
-      if (!getAlarmDescription()
-          .equals(other.getAlarmDescription())) return false;
-      if (!getName()
-          .equals(other.getName())) return false;
-      if (hasKpiId() != other.hasKpiId()) return false;
-      if (hasKpiId()) {
-        if (!getKpiId()
-            .equals(other.getKpiId())) return false;
-      }
-      if (hasKpiValueRange() != other.hasKpiValueRange()) return false;
-      if (hasKpiValueRange()) {
-        if (!getKpiValueRange()
-            .equals(other.getKpiValueRange())) return false;
-      }
-      if (hasTimestamp() != other.hasTimestamp()) return false;
-      if (hasTimestamp()) {
-        if (!getTimestamp()
-            .equals(other.getTimestamp())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasAlarmId()) {
-        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmId().hashCode();
-      }
-      hash = (37 * hash) + ALARM_DESCRIPTION_FIELD_NUMBER;
-      hash = (53 * hash) + getAlarmDescription().hashCode();
-      hash = (37 * hash) + NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getName().hashCode();
-      if (hasKpiId()) {
-        hash = (37 * hash) + KPI_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiId().hashCode();
-      }
-      if (hasKpiValueRange()) {
-        hash = (37 * hash) + KPI_VALUE_RANGE_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiValueRange().hashCode();
-      }
-      if (hasTimestamp()) {
-        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
-        hash = (53 * hash) + getTimestamp().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmDescriptor parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmDescriptor prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmDescriptor}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmDescriptor)
-        monitoring.Monitoring.AlarmDescriptorOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmDescriptor.class, monitoring.Monitoring.AlarmDescriptor.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.AlarmDescriptor.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-        alarmDescription_ = "";
-
-        name_ = "";
-
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = null;
-        } else {
-          kpiValueRange_ = null;
-          kpiValueRangeBuilder_ = null;
-        }
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmDescriptor_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmDescriptor.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor build() {
-        monitoring.Monitoring.AlarmDescriptor result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmDescriptor buildPartial() {
-        monitoring.Monitoring.AlarmDescriptor result = new monitoring.Monitoring.AlarmDescriptor(this);
-        if (alarmIdBuilder_ == null) {
-          result.alarmId_ = alarmId_;
-        } else {
-          result.alarmId_ = alarmIdBuilder_.build();
-        }
-        result.alarmDescription_ = alarmDescription_;
-        result.name_ = name_;
-        if (kpiIdBuilder_ == null) {
-          result.kpiId_ = kpiId_;
-        } else {
-          result.kpiId_ = kpiIdBuilder_.build();
-        }
-        if (kpiValueRangeBuilder_ == null) {
-          result.kpiValueRange_ = kpiValueRange_;
-        } else {
-          result.kpiValueRange_ = kpiValueRangeBuilder_.build();
-        }
-        if (timestampBuilder_ == null) {
-          result.timestamp_ = timestamp_;
-        } else {
-          result.timestamp_ = timestampBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmDescriptor) {
-          return mergeFrom((monitoring.Monitoring.AlarmDescriptor)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.AlarmDescriptor other) {
-        if (other == monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()) return this;
-        if (other.hasAlarmId()) {
-          mergeAlarmId(other.getAlarmId());
-        }
-        if (!other.getAlarmDescription().isEmpty()) {
-          alarmDescription_ = other.alarmDescription_;
-          onChanged();
-        }
-        if (!other.getName().isEmpty()) {
-          name_ = other.name_;
-          onChanged();
-        }
-        if (other.hasKpiId()) {
-          mergeKpiId(other.getKpiId());
-        }
-        if (other.hasKpiValueRange()) {
-          mergeKpiValueRange(other.getKpiValueRange());
-        }
-        if (other.hasTimestamp()) {
-          mergeTimestamp(other.getTimestamp());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmDescriptor parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmDescriptor) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.AlarmID alarmId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return Whether the alarmId field is set.
-       */
-      public boolean hasAlarmId() {
-        return alarmIdBuilder_ != null || alarmId_ != null;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return The alarmId.
-       */
-      public monitoring.Monitoring.AlarmID getAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        } else {
-          return alarmIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          alarmId_ = value;
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(
-          monitoring.Monitoring.AlarmID.Builder builderForValue) {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = builderForValue.build();
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (alarmId_ != null) {
-            alarmId_ =
-              monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
-          } else {
-            alarmId_ = value;
-          }
-          onChanged();
-        } else {
-          alarmIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder clearAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-          onChanged();
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-        
-        onChanged();
-        return getAlarmIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-        if (alarmIdBuilder_ != null) {
-          return alarmIdBuilder_.getMessageOrBuilder();
-        } else {
-          return alarmId_ == null ?
-              monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> 
-          getAlarmIdFieldBuilder() {
-        if (alarmIdBuilder_ == null) {
-          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(
-                  getAlarmId(),
-                  getParentForChildren(),
-                  isClean());
-          alarmId_ = null;
-        }
-        return alarmIdBuilder_;
-      }
-
-      private java.lang.Object alarmDescription_ = "";
-      /**
-       * <code>string alarm_description = 2;</code>
-       * @return The alarmDescription.
-       */
-      public java.lang.String getAlarmDescription() {
-        java.lang.Object ref = alarmDescription_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          alarmDescription_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string alarm_description = 2;</code>
-       * @return The bytes for alarmDescription.
-       */
-      public com.google.protobuf.ByteString
-          getAlarmDescriptionBytes() {
-        java.lang.Object ref = alarmDescription_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          alarmDescription_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string alarm_description = 2;</code>
-       * @param value The alarmDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAlarmDescription(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        alarmDescription_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string alarm_description = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearAlarmDescription() {
-        
-        alarmDescription_ = getDefaultInstance().getAlarmDescription();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string alarm_description = 2;</code>
-       * @param value The bytes for alarmDescription to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAlarmDescriptionBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        alarmDescription_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object name_ = "";
-      /**
-       * <code>string name = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 3;</code>
-       * @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;
-        }
-      }
-      /**
-       * <code>string name = 3;</code>
-       * @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;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearName() {
-        
-        name_ = getDefaultInstance().getName();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string name = 3;</code>
-       * @param value The bytes for name to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        name_ = value;
-        onChanged();
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiId kpiId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> kpiIdBuilder_;
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       * @return Whether the kpiId field is set.
-       */
-      public boolean hasKpiId() {
-        return kpiIdBuilder_ != null || kpiId_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       * @return The kpiId.
-       */
-      public monitoring.Monitoring.KpiId getKpiId() {
-        if (kpiIdBuilder_ == null) {
-          return kpiId_ == null ? monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        } else {
-          return kpiIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public Builder setKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiId_ = value;
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public Builder setKpiId(
-          monitoring.Monitoring.KpiId.Builder builderForValue) {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public Builder mergeKpiId(monitoring.Monitoring.KpiId value) {
-        if (kpiIdBuilder_ == null) {
-          if (kpiId_ != null) {
-            kpiId_ =
-              monitoring.Monitoring.KpiId.newBuilder(kpiId_).mergeFrom(value).buildPartial();
-          } else {
-            kpiId_ = value;
-          }
-          onChanged();
-        } else {
-          kpiIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public Builder clearKpiId() {
-        if (kpiIdBuilder_ == null) {
-          kpiId_ = null;
-          onChanged();
-        } else {
-          kpiId_ = null;
-          kpiIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public monitoring.Monitoring.KpiId.Builder getKpiIdBuilder() {
-        
-        onChanged();
-        return getKpiIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      public monitoring.Monitoring.KpiIdOrBuilder getKpiIdOrBuilder() {
-        if (kpiIdBuilder_ != null) {
-          return kpiIdBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiId_ == null ?
-              monitoring.Monitoring.KpiId.getDefaultInstance() : kpiId_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiId kpi_id = 4;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder> 
-          getKpiIdFieldBuilder() {
-        if (kpiIdBuilder_ == null) {
-          kpiIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiId.Builder, monitoring.Monitoring.KpiIdOrBuilder>(
-                  getKpiId(),
-                  getParentForChildren(),
-                  isClean());
-          kpiId_ = null;
-        }
-        return kpiIdBuilder_;
-      }
-
-      private monitoring.Monitoring.KpiValueRange kpiValueRange_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> kpiValueRangeBuilder_;
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       * @return Whether the kpiValueRange field is set.
-       */
-      public boolean hasKpiValueRange() {
-        return kpiValueRangeBuilder_ != null || kpiValueRange_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       * @return The kpiValueRange.
-       */
-      public monitoring.Monitoring.KpiValueRange getKpiValueRange() {
-        if (kpiValueRangeBuilder_ == null) {
-          return kpiValueRange_ == null ? monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
-        } else {
-          return kpiValueRangeBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public Builder setKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
-        if (kpiValueRangeBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiValueRange_ = value;
-          onChanged();
-        } else {
-          kpiValueRangeBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public Builder setKpiValueRange(
-          monitoring.Monitoring.KpiValueRange.Builder builderForValue) {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiValueRangeBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public Builder mergeKpiValueRange(monitoring.Monitoring.KpiValueRange value) {
-        if (kpiValueRangeBuilder_ == null) {
-          if (kpiValueRange_ != null) {
-            kpiValueRange_ =
-              monitoring.Monitoring.KpiValueRange.newBuilder(kpiValueRange_).mergeFrom(value).buildPartial();
-          } else {
-            kpiValueRange_ = value;
-          }
-          onChanged();
-        } else {
-          kpiValueRangeBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public Builder clearKpiValueRange() {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRange_ = null;
-          onChanged();
-        } else {
-          kpiValueRange_ = null;
-          kpiValueRangeBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public monitoring.Monitoring.KpiValueRange.Builder getKpiValueRangeBuilder() {
-        
-        onChanged();
-        return getKpiValueRangeFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      public monitoring.Monitoring.KpiValueRangeOrBuilder getKpiValueRangeOrBuilder() {
-        if (kpiValueRangeBuilder_ != null) {
-          return kpiValueRangeBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiValueRange_ == null ?
-              monitoring.Monitoring.KpiValueRange.getDefaultInstance() : kpiValueRange_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiValueRange kpi_value_range = 5;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder> 
-          getKpiValueRangeFieldBuilder() {
-        if (kpiValueRangeBuilder_ == null) {
-          kpiValueRangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiValueRange, monitoring.Monitoring.KpiValueRange.Builder, monitoring.Monitoring.KpiValueRangeOrBuilder>(
-                  getKpiValueRange(),
-                  getParentForChildren(),
-                  isClean());
-          kpiValueRange_ = null;
-        }
-        return kpiValueRangeBuilder_;
-      }
-
-      private context.ContextOuterClass.Timestamp timestamp_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       * @return Whether the timestamp field is set.
-       */
-      public boolean hasTimestamp() {
-        return timestampBuilder_ != null || timestamp_ != null;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       * @return The timestamp.
-       */
-      public context.ContextOuterClass.Timestamp getTimestamp() {
-        if (timestampBuilder_ == null) {
-          return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        } else {
-          return timestampBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          timestamp_ = value;
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public Builder setTimestamp(
-          context.ContextOuterClass.Timestamp.Builder builderForValue) {
-        if (timestampBuilder_ == null) {
-          timestamp_ = builderForValue.build();
-          onChanged();
-        } else {
-          timestampBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
-        if (timestampBuilder_ == null) {
-          if (timestamp_ != null) {
-            timestamp_ =
-              context.ContextOuterClass.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
-          } else {
-            timestamp_ = value;
-          }
-          onChanged();
-        } else {
-          timestampBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public Builder clearTimestamp() {
-        if (timestampBuilder_ == null) {
-          timestamp_ = null;
-          onChanged();
-        } else {
-          timestamp_ = null;
-          timestampBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
-        
-        onChanged();
-        return getTimestampFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
-        if (timestampBuilder_ != null) {
-          return timestampBuilder_.getMessageOrBuilder();
-        } else {
-          return timestamp_ == null ?
-              context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
-        }
-      }
-      /**
-       * <code>.context.Timestamp timestamp = 6;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> 
-          getTimestampFieldBuilder() {
-        if (timestampBuilder_ == null) {
-          timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(
-                  getTimestamp(),
-                  getParentForChildren(),
-                  isClean());
-          timestamp_ = null;
-        }
-        return timestampBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmDescriptor)
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmDescriptor)
-    private static final monitoring.Monitoring.AlarmDescriptor DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmDescriptor();
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static monitoring.Monitoring.AlarmDescriptor getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private static final com.google.protobuf.Parser<AlarmDescriptor>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmDescriptor>() {
-      @java.lang.Override
-      public AlarmDescriptor parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmDescriptor(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AlarmDescriptor> parser() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AlarmDescriptor> getParserForType() {
-      return PARSER;
-    }
+        public static monitoring.Monitoring.AlarmList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmDescriptor getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static monitoring.Monitoring.AlarmList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-  }
+        public static monitoring.Monitoring.AlarmList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  public interface AlarmIDOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmID)
-      com.google.protobuf.MessageOrBuilder {
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    boolean hasAlarmId();
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    context.ContextOuterClass.Uuid getAlarmId();
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmID}
-   */
-  public static final class AlarmID extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmID)
-      AlarmIDOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmID.newBuilder() to construct.
-    private AlarmID(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmID() {
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmID();
-    }
+        public static Builder newBuilder(monitoring.Monitoring.AlarmList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmID(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (alarmId_ != null) {
-                subBuilder = alarmId_.toBuilder();
-              }
-              alarmId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(alarmId_);
-                alarmId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static final int ALARM_ID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid alarmId_;
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    @java.lang.Override
-    public boolean hasAlarmId() {
-      return alarmId_ != null;
-    }
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getAlarmId() {
-      return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
-    }
-    /**
-     * <code>.context.Uuid alarm_id = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-      return getAlarmId();
-    }
+        /**
+         * Protobuf type {@code monitoring.AlarmList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:monitoring.AlarmList)
+        monitoring.Monitoring.AlarmListOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable.ensureFieldAccessorsInitialized(monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class);
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (alarmId_ != null) {
-        output.writeMessage(1, getAlarmId());
-      }
-      unknownFields.writeTo(output);
-    }
+            // Construct using monitoring.Monitoring.AlarmList.newBuilder()
+            private Builder() {
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (alarmId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getAlarmId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.AlarmID)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.AlarmID other = (monitoring.Monitoring.AlarmID) obj;
-
-      if (hasAlarmId() != other.hasAlarmId()) return false;
-      if (hasAlarmId()) {
-        if (!getAlarmId()
-            .equals(other.getAlarmId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (alarmDescriptorBuilder_ == null) {
+                    alarmDescriptor_ = java.util.Collections.emptyList();
+                } else {
+                    alarmDescriptor_ = null;
+                    alarmDescriptorBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasAlarmId()) {
-        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
+            }
 
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmID parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmID parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmList getDefaultInstanceForType() {
+                return monitoring.Monitoring.AlarmList.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmID 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
+            public monitoring.Monitoring.AlarmList build() {
+                monitoring.Monitoring.AlarmList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public monitoring.Monitoring.AlarmList buildPartial() {
+                monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(monitoring.Monitoring.AlarmList result) {
+                if (alarmDescriptorBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.alarmDescriptor_ = alarmDescriptor_;
+                } else {
+                    result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(monitoring.Monitoring.AlarmList result) {
+                int from_bitField0_ = bitField0_;
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmID}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmID)
-        monitoring.Monitoring.AlarmIDOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmID.class, monitoring.Monitoring.AlarmID.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.AlarmID.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmID_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmID.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmID build() {
-        monitoring.Monitoring.AlarmID result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmID buildPartial() {
-        monitoring.Monitoring.AlarmID result = new monitoring.Monitoring.AlarmID(this);
-        if (alarmIdBuilder_ == null) {
-          result.alarmId_ = alarmId_;
-        } else {
-          result.alarmId_ = alarmIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmID) {
-          return mergeFrom((monitoring.Monitoring.AlarmID)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.AlarmID other) {
-        if (other == monitoring.Monitoring.AlarmID.getDefaultInstance()) return this;
-        if (other.hasAlarmId()) {
-          mergeAlarmId(other.getAlarmId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmID parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmID) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid alarmId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> alarmIdBuilder_;
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       * @return Whether the alarmId field is set.
-       */
-      public boolean hasAlarmId() {
-        return alarmIdBuilder_ != null || alarmId_ != null;
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       * @return The alarmId.
-       */
-      public context.ContextOuterClass.Uuid getAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          return alarmId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
-        } else {
-          return alarmIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(context.ContextOuterClass.Uuid value) {
-        if (alarmIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          alarmId_ = value;
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = builderForValue.build();
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public Builder mergeAlarmId(context.ContextOuterClass.Uuid value) {
-        if (alarmIdBuilder_ == null) {
-          if (alarmId_ != null) {
-            alarmId_ =
-              context.ContextOuterClass.Uuid.newBuilder(alarmId_).mergeFrom(value).buildPartial();
-          } else {
-            alarmId_ = value;
-          }
-          onChanged();
-        } else {
-          alarmIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public Builder clearAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-          onChanged();
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getAlarmIdBuilder() {
-        
-        onChanged();
-        return getAlarmIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getAlarmIdOrBuilder() {
-        if (alarmIdBuilder_ != null) {
-          return alarmIdBuilder_.getMessageOrBuilder();
-        } else {
-          return alarmId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : alarmId_;
-        }
-      }
-      /**
-       * <code>.context.Uuid alarm_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getAlarmIdFieldBuilder() {
-        if (alarmIdBuilder_ == null) {
-          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getAlarmId(),
-                  getParentForChildren(),
-                  isClean());
-          alarmId_ = null;
-        }
-        return alarmIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmID)
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof monitoring.Monitoring.AlarmList) {
+                    return mergeFrom((monitoring.Monitoring.AlarmList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmID)
-    private static final monitoring.Monitoring.AlarmID DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmID();
-    }
+            public Builder mergeFrom(monitoring.Monitoring.AlarmList other) {
+                if (other == monitoring.Monitoring.AlarmList.getDefaultInstance())
+                    return this;
+                if (alarmDescriptorBuilder_ == null) {
+                    if (!other.alarmDescriptor_.isEmpty()) {
+                        if (alarmDescriptor_.isEmpty()) {
+                            alarmDescriptor_ = other.alarmDescriptor_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureAlarmDescriptorIsMutable();
+                            alarmDescriptor_.addAll(other.alarmDescriptor_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.alarmDescriptor_.isEmpty()) {
+                        if (alarmDescriptorBuilder_.isEmpty()) {
+                            alarmDescriptorBuilder_.dispose();
+                            alarmDescriptorBuilder_ = null;
+                            alarmDescriptor_ = other.alarmDescriptor_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            alarmDescriptorBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getAlarmDescriptorFieldBuilder() : null;
+                        } else {
+                            alarmDescriptorBuilder_.addAllMessages(other.alarmDescriptor_);
+                        }
+                    }
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    public static monitoring.Monitoring.AlarmID getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-    private static final com.google.protobuf.Parser<AlarmID>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmID>() {
-      @java.lang.Override
-      public AlarmID parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmID(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AlarmID> parser() {
-      return PARSER;
-    }
+            @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:
+                                {
+                                    monitoring.Monitoring.AlarmDescriptor m = input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry);
+                                    if (alarmDescriptorBuilder_ == null) {
+                                        ensureAlarmDescriptorIsMutable();
+                                        alarmDescriptor_.add(m);
+                                    } else {
+                                        alarmDescriptorBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AlarmID> getParserForType() {
-      return PARSER;
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmID getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_ = java.util.Collections.emptyList();
 
-  }
+            private void ensureAlarmDescriptorIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    alarmDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.AlarmDescriptor>(alarmDescriptor_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
 
-  public interface AlarmSubscriptionOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmSubscription)
-      com.google.protobuf.MessageOrBuilder {
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> alarmDescriptorBuilder_;
+
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptorList() {
+                if (alarmDescriptorBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(alarmDescriptor_);
+                } else {
+                    return alarmDescriptorBuilder_.getMessageList();
+                }
+            }
 
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    boolean hasAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    monitoring.Monitoring.AlarmID getAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     */
-    monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public int getAlarmDescriptorCount() {
+                if (alarmDescriptorBuilder_ == null) {
+                    return alarmDescriptor_.size();
+                } else {
+                    return alarmDescriptorBuilder_.getCount();
+                }
+            }
 
-    /**
-     * <code>float subscription_timeout_s = 2;</code>
-     * @return The subscriptionTimeoutS.
-     */
-    float getSubscriptionTimeoutS();
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) {
+                if (alarmDescriptorBuilder_ == null) {
+                    return alarmDescriptor_.get(index);
+                } else {
+                    return alarmDescriptorBuilder_.getMessage(index);
+                }
+            }
 
-    /**
-     * <code>float subscription_frequency_ms = 3;</code>
-     * @return The subscriptionFrequencyMs.
-     */
-    float getSubscriptionFrequencyMs();
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmSubscription}
-   */
-  public static final class AlarmSubscription extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmSubscription)
-      AlarmSubscriptionOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmSubscription.newBuilder() to construct.
-    private AlarmSubscription(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmSubscription() {
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder setAlarmDescriptor(int index, monitoring.Monitoring.AlarmDescriptor value) {
+                if (alarmDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.set(index, value);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmSubscription();
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder setAlarmDescriptor(int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
+                if (alarmDescriptorBuilder_ == null) {
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmSubscription(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-              if (alarmId_ != null) {
-                subBuilder = alarmId_.toBuilder();
-              }
-              alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(alarmId_);
-                alarmId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 21: {
-
-              subscriptionTimeoutS_ = input.readFloat();
-              break;
-            }
-            case 29: {
-
-              subscriptionFrequencyMs_ = input.readFloat();
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder addAlarmDescriptor(monitoring.Monitoring.AlarmDescriptor value) {
+                if (alarmDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.add(value);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.addMessage(value);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder addAlarmDescriptor(int index, monitoring.Monitoring.AlarmDescriptor value) {
+                if (alarmDescriptorBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.add(index, value);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
 
-    public static final int ALARM_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.AlarmID alarmId_;
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    @java.lang.Override
-    public boolean hasAlarmId() {
-      return alarmId_ != null;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmID getAlarmId() {
-      return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-      return getAlarmId();
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder addAlarmDescriptor(monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
+                if (alarmDescriptorBuilder_ == null) {
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
 
-    public static final int SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER = 2;
-    private float subscriptionTimeoutS_;
-    /**
-     * <code>float subscription_timeout_s = 2;</code>
-     * @return The subscriptionTimeoutS.
-     */
-    @java.lang.Override
-    public float getSubscriptionTimeoutS() {
-      return subscriptionTimeoutS_;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder addAlarmDescriptor(int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
+                if (alarmDescriptorBuilder_ == null) {
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
 
-    public static final int SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER = 3;
-    private float subscriptionFrequencyMs_;
-    /**
-     * <code>float subscription_frequency_ms = 3;</code>
-     * @return The subscriptionFrequencyMs.
-     */
-    @java.lang.Override
-    public float getSubscriptionFrequencyMs() {
-      return subscriptionFrequencyMs_;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder addAllAlarmDescriptor(java.lang.Iterable<? extends monitoring.Monitoring.AlarmDescriptor> values) {
+                if (alarmDescriptorBuilder_ == null) {
+                    ensureAlarmDescriptorIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, alarmDescriptor_);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder clearAlarmDescriptor() {
+                if (alarmDescriptorBuilder_ == null) {
+                    alarmDescriptor_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.clear();
+                }
+                return this;
+            }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public Builder removeAlarmDescriptor(int index) {
+                if (alarmDescriptorBuilder_ == null) {
+                    ensureAlarmDescriptorIsMutable();
+                    alarmDescriptor_.remove(index);
+                    onChanged();
+                } else {
+                    alarmDescriptorBuilder_.remove(index);
+                }
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (alarmId_ != null) {
-        output.writeMessage(1, getAlarmId());
-      }
-      if (subscriptionTimeoutS_ != 0F) {
-        output.writeFloat(2, subscriptionTimeoutS_);
-      }
-      if (subscriptionFrequencyMs_ != 0F) {
-        output.writeFloat(3, subscriptionFrequencyMs_);
-      }
-      unknownFields.writeTo(output);
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmDescriptor.Builder getAlarmDescriptorBuilder(int index) {
+                return getAlarmDescriptorFieldBuilder().getBuilder(index);
+            }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (alarmId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getAlarmId());
-      }
-      if (subscriptionTimeoutS_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(2, subscriptionTimeoutS_);
-      }
-      if (subscriptionFrequencyMs_ != 0F) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(3, subscriptionFrequencyMs_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(int index) {
+                if (alarmDescriptorBuilder_ == null) {
+                    return alarmDescriptor_.get(index);
+                } else {
+                    return alarmDescriptorBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.AlarmSubscription)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.AlarmSubscription other = (monitoring.Monitoring.AlarmSubscription) obj;
-
-      if (hasAlarmId() != other.hasAlarmId()) return false;
-      if (hasAlarmId()) {
-        if (!getAlarmId()
-            .equals(other.getAlarmId())) return false;
-      }
-      if (java.lang.Float.floatToIntBits(getSubscriptionTimeoutS())
-          != java.lang.Float.floatToIntBits(
-              other.getSubscriptionTimeoutS())) return false;
-      if (java.lang.Float.floatToIntBits(getSubscriptionFrequencyMs())
-          != java.lang.Float.floatToIntBits(
-              other.getSubscriptionFrequencyMs())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> getAlarmDescriptorOrBuilderList() {
+                if (alarmDescriptorBuilder_ != null) {
+                    return alarmDescriptorBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(alarmDescriptor_);
+                }
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasAlarmId()) {
-        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmId().hashCode();
-      }
-      hash = (37 * hash) + SUBSCRIPTION_TIMEOUT_S_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSubscriptionTimeoutS());
-      hash = (37 * hash) + SUBSCRIPTION_FREQUENCY_MS_FIELD_NUMBER;
-      hash = (53 * hash) + java.lang.Float.floatToIntBits(
-          getSubscriptionFrequencyMs());
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder() {
+                return getAlarmDescriptorFieldBuilder().addBuilder(monitoring.Monitoring.AlarmDescriptor.getDefaultInstance());
+            }
 
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmSubscription parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder(int index) {
+                return getAlarmDescriptorFieldBuilder().addBuilder(index, monitoring.Monitoring.AlarmDescriptor.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmSubscription prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
+             */
+            public java.util.List<monitoring.Monitoring.AlarmDescriptor.Builder> getAlarmDescriptorBuilderList() {
+                return getAlarmDescriptorFieldBuilder().getBuilderList();
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmSubscription}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmSubscription)
-        monitoring.Monitoring.AlarmSubscriptionOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmSubscription.class, monitoring.Monitoring.AlarmSubscription.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.AlarmSubscription.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-        subscriptionTimeoutS_ = 0F;
-
-        subscriptionFrequencyMs_ = 0F;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmSubscription_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmSubscription.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmSubscription build() {
-        monitoring.Monitoring.AlarmSubscription result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmSubscription buildPartial() {
-        monitoring.Monitoring.AlarmSubscription result = new monitoring.Monitoring.AlarmSubscription(this);
-        if (alarmIdBuilder_ == null) {
-          result.alarmId_ = alarmId_;
-        } else {
-          result.alarmId_ = alarmIdBuilder_.build();
-        }
-        result.subscriptionTimeoutS_ = subscriptionTimeoutS_;
-        result.subscriptionFrequencyMs_ = subscriptionFrequencyMs_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmSubscription) {
-          return mergeFrom((monitoring.Monitoring.AlarmSubscription)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.AlarmSubscription other) {
-        if (other == monitoring.Monitoring.AlarmSubscription.getDefaultInstance()) return this;
-        if (other.hasAlarmId()) {
-          mergeAlarmId(other.getAlarmId());
-        }
-        if (other.getSubscriptionTimeoutS() != 0F) {
-          setSubscriptionTimeoutS(other.getSubscriptionTimeoutS());
-        }
-        if (other.getSubscriptionFrequencyMs() != 0F) {
-          setSubscriptionFrequencyMs(other.getSubscriptionFrequencyMs());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmSubscription parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmSubscription) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.AlarmID alarmId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return Whether the alarmId field is set.
-       */
-      public boolean hasAlarmId() {
-        return alarmIdBuilder_ != null || alarmId_ != null;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return The alarmId.
-       */
-      public monitoring.Monitoring.AlarmID getAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        } else {
-          return alarmIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          alarmId_ = value;
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(
-          monitoring.Monitoring.AlarmID.Builder builderForValue) {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = builderForValue.build();
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (alarmId_ != null) {
-            alarmId_ =
-              monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
-          } else {
-            alarmId_ = value;
-          }
-          onChanged();
-        } else {
-          alarmIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder clearAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-          onChanged();
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-        
-        onChanged();
-        return getAlarmIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-        if (alarmIdBuilder_ != null) {
-          return alarmIdBuilder_.getMessageOrBuilder();
-        } else {
-          return alarmId_ == null ?
-              monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> 
-          getAlarmIdFieldBuilder() {
-        if (alarmIdBuilder_ == null) {
-          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(
-                  getAlarmId(),
-                  getParentForChildren(),
-                  isClean());
-          alarmId_ = null;
-        }
-        return alarmIdBuilder_;
-      }
-
-      private float subscriptionTimeoutS_ ;
-      /**
-       * <code>float subscription_timeout_s = 2;</code>
-       * @return The subscriptionTimeoutS.
-       */
-      @java.lang.Override
-      public float getSubscriptionTimeoutS() {
-        return subscriptionTimeoutS_;
-      }
-      /**
-       * <code>float subscription_timeout_s = 2;</code>
-       * @param value The subscriptionTimeoutS to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSubscriptionTimeoutS(float value) {
-        
-        subscriptionTimeoutS_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float subscription_timeout_s = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSubscriptionTimeoutS() {
-        
-        subscriptionTimeoutS_ = 0F;
-        onChanged();
-        return this;
-      }
-
-      private float subscriptionFrequencyMs_ ;
-      /**
-       * <code>float subscription_frequency_ms = 3;</code>
-       * @return The subscriptionFrequencyMs.
-       */
-      @java.lang.Override
-      public float getSubscriptionFrequencyMs() {
-        return subscriptionFrequencyMs_;
-      }
-      /**
-       * <code>float subscription_frequency_ms = 3;</code>
-       * @param value The subscriptionFrequencyMs to set.
-       * @return This builder for chaining.
-       */
-      public Builder setSubscriptionFrequencyMs(float value) {
-        
-        subscriptionFrequencyMs_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>float subscription_frequency_ms = 3;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearSubscriptionFrequencyMs() {
-        
-        subscriptionFrequencyMs_ = 0F;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmSubscription)
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> getAlarmDescriptorFieldBuilder() {
+                if (alarmDescriptorBuilder_ == null) {
+                    alarmDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder>(alarmDescriptor_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    alarmDescriptor_ = null;
+                }
+                return alarmDescriptorBuilder_;
+            }
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmSubscription)
-    private static final monitoring.Monitoring.AlarmSubscription DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmSubscription();
-    }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-    public static monitoring.Monitoring.AlarmSubscription getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:monitoring.AlarmList)
+        }
 
-    private static final com.google.protobuf.Parser<AlarmSubscription>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmSubscription>() {
-      @java.lang.Override
-      public AlarmSubscription parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmSubscription(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AlarmSubscription> parser() {
-      return PARSER;
-    }
+        // @@protoc_insertion_point(class_scope:monitoring.AlarmList)
+        private static final monitoring.Monitoring.AlarmList DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AlarmSubscription> getParserForType() {
-      return PARSER;
-    }
+        static {
+            DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmList();
+        }
 
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmSubscription getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static monitoring.Monitoring.AlarmList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-  }
+        private static final com.google.protobuf.Parser<AlarmList> PARSER = new com.google.protobuf.AbstractParser<AlarmList>() {
 
-  public interface AlarmResponseOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmResponse)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public AlarmList 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();
+            }
+        };
 
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    boolean hasAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    monitoring.Monitoring.AlarmID getAlarmId();
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     */
-    monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder();
+        public static com.google.protobuf.Parser<AlarmList> parser() {
+            return PARSER;
+        }
 
-    /**
-     * <code>string text = 2;</code>
-     * @return The text.
-     */
-    java.lang.String getText();
-    /**
-     * <code>string text = 2;</code>
-     * @return The bytes for text.
-     */
-    com.google.protobuf.ByteString
-        getTextBytes();
+        @java.lang.Override
+        public com.google.protobuf.Parser<AlarmList> getParserForType() {
+            return PARSER;
+        }
 
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     * @return Whether the kpiList field is set.
-     */
-    boolean hasKpiList();
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     * @return The kpiList.
-     */
-    monitoring.Monitoring.KpiList getKpiList();
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     */
-    monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder();
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmResponse}
-   */
-  public static final class AlarmResponse extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmResponse)
-      AlarmResponseOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmResponse.newBuilder() to construct.
-    private AlarmResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmResponse() {
-      text_ = "";
+        @java.lang.Override
+        public monitoring.Monitoring.AlarmList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmResponse();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiDescriptor_descriptor;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmResponse(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              monitoring.Monitoring.AlarmID.Builder subBuilder = null;
-              if (alarmId_ != null) {
-                subBuilder = alarmId_.toBuilder();
-              }
-              alarmId_ = input.readMessage(monitoring.Monitoring.AlarmID.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(alarmId_);
-                alarmId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              text_ = s;
-              break;
-            }
-            case 26: {
-              monitoring.Monitoring.KpiList.Builder subBuilder = null;
-              if (kpiList_ != null) {
-                subBuilder = kpiList_.toBuilder();
-              }
-              kpiList_ = input.readMessage(monitoring.Monitoring.KpiList.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(kpiList_);
-                kpiList_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiDescriptor_fieldAccessorTable;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmResponse.class, monitoring.Monitoring.AlarmResponse.Builder.class);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_MonitorKpiRequest_descriptor;
 
-    public static final int ALARM_ID_FIELD_NUMBER = 1;
-    private monitoring.Monitoring.AlarmID alarmId_;
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return Whether the alarmId field is set.
-     */
-    @java.lang.Override
-    public boolean hasAlarmId() {
-      return alarmId_ != null;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     * @return The alarmId.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmID getAlarmId() {
-      return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-    }
-    /**
-     * <code>.monitoring.AlarmID alarm_id = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-      return getAlarmId();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable;
 
-    public static final int TEXT_FIELD_NUMBER = 2;
-    private volatile java.lang.Object text_;
-    /**
-     * <code>string text = 2;</code>
-     * @return The text.
-     */
-    @java.lang.Override
-    public java.lang.String getText() {
-      java.lang.Object ref = text_;
-      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();
-        text_ = s;
-        return s;
-      }
-    }
-    /**
-     * <code>string text = 2;</code>
-     * @return The bytes for text.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getTextBytes() {
-      java.lang.Object ref = text_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        text_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiQuery_descriptor;
 
-    public static final int KPI_LIST_FIELD_NUMBER = 3;
-    private monitoring.Monitoring.KpiList kpiList_;
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     * @return Whether the kpiList field is set.
-     */
-    @java.lang.Override
-    public boolean hasKpiList() {
-      return kpiList_ != null;
-    }
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     * @return The kpiList.
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiList getKpiList() {
-      return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-    }
-    /**
-     * <code>.monitoring.KpiList kpi_list = 3;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-      return getKpiList();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiQuery_fieldAccessorTable;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_RawKpi_descriptor;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_RawKpi_fieldAccessorTable;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (alarmId_ != null) {
-        output.writeMessage(1, getAlarmId());
-      }
-      if (!getTextBytes().isEmpty()) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
-      }
-      if (kpiList_ != null) {
-        output.writeMessage(3, getKpiList());
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_RawKpiList_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (alarmId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getAlarmId());
-      }
-      if (!getTextBytes().isEmpty()) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
-      }
-      if (kpiList_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(3, getKpiList());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_RawKpiList_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.AlarmResponse)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.AlarmResponse other = (monitoring.Monitoring.AlarmResponse) obj;
-
-      if (hasAlarmId() != other.hasAlarmId()) return false;
-      if (hasAlarmId()) {
-        if (!getAlarmId()
-            .equals(other.getAlarmId())) return false;
-      }
-      if (!getText()
-          .equals(other.getText())) return false;
-      if (hasKpiList() != other.hasKpiList()) return false;
-      if (hasKpiList()) {
-        if (!getKpiList()
-            .equals(other.getKpiList())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_RawKpiTable_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasAlarmId()) {
-        hash = (37 * hash) + ALARM_ID_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmId().hashCode();
-      }
-      hash = (37 * hash) + TEXT_FIELD_NUMBER;
-      hash = (53 * hash) + getText().hashCode();
-      if (hasKpiList()) {
-        hash = (37 * hash) + KPI_LIST_FIELD_NUMBER;
-        hash = (53 * hash) + getKpiList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_RawKpiTable_fieldAccessorTable;
 
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmResponse parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiId_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmResponse prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiId_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmResponse}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmResponse)
-        monitoring.Monitoring.AlarmResponseOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmResponse.class, monitoring.Monitoring.AlarmResponse.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.AlarmResponse.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-        text_ = "";
-
-        if (kpiListBuilder_ == null) {
-          kpiList_ = null;
-        } else {
-          kpiList_ = null;
-          kpiListBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmResponse_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmResponse getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmResponse.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmResponse build() {
-        monitoring.Monitoring.AlarmResponse result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmResponse buildPartial() {
-        monitoring.Monitoring.AlarmResponse result = new monitoring.Monitoring.AlarmResponse(this);
-        if (alarmIdBuilder_ == null) {
-          result.alarmId_ = alarmId_;
-        } else {
-          result.alarmId_ = alarmIdBuilder_.build();
-        }
-        result.text_ = text_;
-        if (kpiListBuilder_ == null) {
-          result.kpiList_ = kpiList_;
-        } else {
-          result.kpiList_ = kpiListBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmResponse) {
-          return mergeFrom((monitoring.Monitoring.AlarmResponse)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.AlarmResponse other) {
-        if (other == monitoring.Monitoring.AlarmResponse.getDefaultInstance()) return this;
-        if (other.hasAlarmId()) {
-          mergeAlarmId(other.getAlarmId());
-        }
-        if (!other.getText().isEmpty()) {
-          text_ = other.text_;
-          onChanged();
-        }
-        if (other.hasKpiList()) {
-          mergeKpiList(other.getKpiList());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmResponse parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmResponse) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private monitoring.Monitoring.AlarmID alarmId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> alarmIdBuilder_;
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return Whether the alarmId field is set.
-       */
-      public boolean hasAlarmId() {
-        return alarmIdBuilder_ != null || alarmId_ != null;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       * @return The alarmId.
-       */
-      public monitoring.Monitoring.AlarmID getAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          return alarmId_ == null ? monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        } else {
-          return alarmIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          alarmId_ = value;
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder setAlarmId(
-          monitoring.Monitoring.AlarmID.Builder builderForValue) {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = builderForValue.build();
-          onChanged();
-        } else {
-          alarmIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder mergeAlarmId(monitoring.Monitoring.AlarmID value) {
-        if (alarmIdBuilder_ == null) {
-          if (alarmId_ != null) {
-            alarmId_ =
-              monitoring.Monitoring.AlarmID.newBuilder(alarmId_).mergeFrom(value).buildPartial();
-          } else {
-            alarmId_ = value;
-          }
-          onChanged();
-        } else {
-          alarmIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public Builder clearAlarmId() {
-        if (alarmIdBuilder_ == null) {
-          alarmId_ = null;
-          onChanged();
-        } else {
-          alarmId_ = null;
-          alarmIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmID.Builder getAlarmIdBuilder() {
-        
-        onChanged();
-        return getAlarmIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmIDOrBuilder getAlarmIdOrBuilder() {
-        if (alarmIdBuilder_ != null) {
-          return alarmIdBuilder_.getMessageOrBuilder();
-        } else {
-          return alarmId_ == null ?
-              monitoring.Monitoring.AlarmID.getDefaultInstance() : alarmId_;
-        }
-      }
-      /**
-       * <code>.monitoring.AlarmID alarm_id = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder> 
-          getAlarmIdFieldBuilder() {
-        if (alarmIdBuilder_ == null) {
-          alarmIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmID.Builder, monitoring.Monitoring.AlarmIDOrBuilder>(
-                  getAlarmId(),
-                  getParentForChildren(),
-                  isClean());
-          alarmId_ = null;
-        }
-        return alarmIdBuilder_;
-      }
-
-      private java.lang.Object text_ = "";
-      /**
-       * <code>string text = 2;</code>
-       * @return The text.
-       */
-      public java.lang.String getText() {
-        java.lang.Object ref = text_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          text_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>string text = 2;</code>
-       * @return The bytes for text.
-       */
-      public com.google.protobuf.ByteString
-          getTextBytes() {
-        java.lang.Object ref = text_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          text_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>string text = 2;</code>
-       * @param value The text to set.
-       * @return This builder for chaining.
-       */
-      public Builder setText(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        text_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string text = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearText() {
-        
-        text_ = getDefaultInstance().getText();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>string text = 2;</code>
-       * @param value The bytes for text to set.
-       * @return This builder for chaining.
-       */
-      public Builder setTextBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        text_ = value;
-        onChanged();
-        return this;
-      }
-
-      private monitoring.Monitoring.KpiList kpiList_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> kpiListBuilder_;
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       * @return Whether the kpiList field is set.
-       */
-      public boolean hasKpiList() {
-        return kpiListBuilder_ != null || kpiList_ != null;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       * @return The kpiList.
-       */
-      public monitoring.Monitoring.KpiList getKpiList() {
-        if (kpiListBuilder_ == null) {
-          return kpiList_ == null ? monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-        } else {
-          return kpiListBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public Builder setKpiList(monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          kpiList_ = value;
-          onChanged();
-        } else {
-          kpiListBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public Builder setKpiList(
-          monitoring.Monitoring.KpiList.Builder builderForValue) {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = builderForValue.build();
-          onChanged();
-        } else {
-          kpiListBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public Builder mergeKpiList(monitoring.Monitoring.KpiList value) {
-        if (kpiListBuilder_ == null) {
-          if (kpiList_ != null) {
-            kpiList_ =
-              monitoring.Monitoring.KpiList.newBuilder(kpiList_).mergeFrom(value).buildPartial();
-          } else {
-            kpiList_ = value;
-          }
-          onChanged();
-        } else {
-          kpiListBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public Builder clearKpiList() {
-        if (kpiListBuilder_ == null) {
-          kpiList_ = null;
-          onChanged();
-        } else {
-          kpiList_ = null;
-          kpiListBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiList.Builder getKpiListBuilder() {
-        
-        onChanged();
-        return getKpiListFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      public monitoring.Monitoring.KpiListOrBuilder getKpiListOrBuilder() {
-        if (kpiListBuilder_ != null) {
-          return kpiListBuilder_.getMessageOrBuilder();
-        } else {
-          return kpiList_ == null ?
-              monitoring.Monitoring.KpiList.getDefaultInstance() : kpiList_;
-        }
-      }
-      /**
-       * <code>.monitoring.KpiList kpi_list = 3;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder> 
-          getKpiListFieldBuilder() {
-        if (kpiListBuilder_ == null) {
-          kpiListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              monitoring.Monitoring.KpiList, monitoring.Monitoring.KpiList.Builder, monitoring.Monitoring.KpiListOrBuilder>(
-                  getKpiList(),
-                  getParentForChildren(),
-                  isClean());
-          kpiList_ = null;
-        }
-        return kpiListBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmResponse)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_Kpi_descriptor;
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmResponse)
-    private static final monitoring.Monitoring.AlarmResponse DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmResponse();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_Kpi_fieldAccessorTable;
 
-    public static monitoring.Monitoring.AlarmResponse getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiValueRange_descriptor;
 
-    private static final com.google.protobuf.Parser<AlarmResponse>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmResponse>() {
-      @java.lang.Override
-      public AlarmResponse parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmResponse(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AlarmResponse> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiValueRange_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AlarmResponse> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiValue_descriptor;
 
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmResponse getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiValue_fieldAccessorTable;
 
-  }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiList_descriptor;
 
-  public interface AlarmListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:monitoring.AlarmList)
-      com.google.protobuf.MessageOrBuilder {
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiList_fieldAccessorTable;
 
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    java.util.List<monitoring.Monitoring.AlarmDescriptor> 
-        getAlarmDescriptorList();
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index);
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    int getAlarmDescriptorCount();
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> 
-        getAlarmDescriptorOrBuilderList();
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code monitoring.AlarmList}
-   */
-  public static final class AlarmList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:monitoring.AlarmList)
-      AlarmListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use AlarmList.newBuilder() to construct.
-    private AlarmList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private AlarmList() {
-      alarmDescriptor_ = java.util.Collections.emptyList();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_KpiDescriptorList_descriptor;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AlarmList();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_KpiDescriptorList_fieldAccessorTable;
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private AlarmList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                alarmDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.AlarmDescriptor>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              alarmDescriptor_.add(
-                  input.readMessage(monitoring.Monitoring.AlarmDescriptor.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_SubsDescriptor_descriptor;
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_SubsDescriptor_fieldAccessorTable;
 
-    public static final int ALARM_DESCRIPTOR_FIELD_NUMBER = 1;
-    private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_;
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptorList() {
-      return alarmDescriptor_;
-    }
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> 
-        getAlarmDescriptorOrBuilderList() {
-      return alarmDescriptor_;
-    }
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public int getAlarmDescriptorCount() {
-      return alarmDescriptor_.size();
-    }
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) {
-      return alarmDescriptor_.get(index);
-    }
-    /**
-     * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-     */
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(
-        int index) {
-      return alarmDescriptor_.get(index);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_SubscriptionID_descriptor;
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_SubscriptionID_fieldAccessorTable;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_SubsResponse_descriptor;
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < alarmDescriptor_.size(); i++) {
-        output.writeMessage(1, alarmDescriptor_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_SubsResponse_fieldAccessorTable;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < alarmDescriptor_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, alarmDescriptor_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_SubsList_descriptor;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof monitoring.Monitoring.AlarmList)) {
-        return super.equals(obj);
-      }
-      monitoring.Monitoring.AlarmList other = (monitoring.Monitoring.AlarmList) obj;
-
-      if (!getAlarmDescriptorList()
-          .equals(other.getAlarmDescriptorList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_SubsList_fieldAccessorTable;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getAlarmDescriptorCount() > 0) {
-        hash = (37 * hash) + ALARM_DESCRIPTOR_FIELD_NUMBER;
-        hash = (53 * hash) + getAlarmDescriptorList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmDescriptor_descriptor;
 
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static monitoring.Monitoring.AlarmList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmDescriptor_fieldAccessorTable;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(monitoring.Monitoring.AlarmList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmID_descriptor;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code monitoring.AlarmList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:monitoring.AlarmList)
-        monitoring.Monitoring.AlarmListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                monitoring.Monitoring.AlarmList.class, monitoring.Monitoring.AlarmList.Builder.class);
-      }
-
-      // Construct using monitoring.Monitoring.AlarmList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getAlarmDescriptorFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (alarmDescriptorBuilder_ == null) {
-          alarmDescriptor_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          alarmDescriptorBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return monitoring.Monitoring.internal_static_monitoring_AlarmList_descriptor;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmList getDefaultInstanceForType() {
-        return monitoring.Monitoring.AlarmList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmList build() {
-        monitoring.Monitoring.AlarmList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public monitoring.Monitoring.AlarmList buildPartial() {
-        monitoring.Monitoring.AlarmList result = new monitoring.Monitoring.AlarmList(this);
-        int from_bitField0_ = bitField0_;
-        if (alarmDescriptorBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            alarmDescriptor_ = java.util.Collections.unmodifiableList(alarmDescriptor_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.alarmDescriptor_ = alarmDescriptor_;
-        } else {
-          result.alarmDescriptor_ = alarmDescriptorBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof monitoring.Monitoring.AlarmList) {
-          return mergeFrom((monitoring.Monitoring.AlarmList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(monitoring.Monitoring.AlarmList other) {
-        if (other == monitoring.Monitoring.AlarmList.getDefaultInstance()) return this;
-        if (alarmDescriptorBuilder_ == null) {
-          if (!other.alarmDescriptor_.isEmpty()) {
-            if (alarmDescriptor_.isEmpty()) {
-              alarmDescriptor_ = other.alarmDescriptor_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureAlarmDescriptorIsMutable();
-              alarmDescriptor_.addAll(other.alarmDescriptor_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.alarmDescriptor_.isEmpty()) {
-            if (alarmDescriptorBuilder_.isEmpty()) {
-              alarmDescriptorBuilder_.dispose();
-              alarmDescriptorBuilder_ = null;
-              alarmDescriptor_ = other.alarmDescriptor_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              alarmDescriptorBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getAlarmDescriptorFieldBuilder() : null;
-            } else {
-              alarmDescriptorBuilder_.addAllMessages(other.alarmDescriptor_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        monitoring.Monitoring.AlarmList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (monitoring.Monitoring.AlarmList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<monitoring.Monitoring.AlarmDescriptor> alarmDescriptor_ =
-        java.util.Collections.emptyList();
-      private void ensureAlarmDescriptorIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          alarmDescriptor_ = new java.util.ArrayList<monitoring.Monitoring.AlarmDescriptor>(alarmDescriptor_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> alarmDescriptorBuilder_;
-
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptorList() {
-        if (alarmDescriptorBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(alarmDescriptor_);
-        } else {
-          return alarmDescriptorBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public int getAlarmDescriptorCount() {
-        if (alarmDescriptorBuilder_ == null) {
-          return alarmDescriptor_.size();
-        } else {
-          return alarmDescriptorBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(int index) {
-        if (alarmDescriptorBuilder_ == null) {
-          return alarmDescriptor_.get(index);
-        } else {
-          return alarmDescriptorBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder setAlarmDescriptor(
-          int index, monitoring.Monitoring.AlarmDescriptor value) {
-        if (alarmDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.set(index, value);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder setAlarmDescriptor(
-          int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
-        if (alarmDescriptorBuilder_ == null) {
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder addAlarmDescriptor(monitoring.Monitoring.AlarmDescriptor value) {
-        if (alarmDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.add(value);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder addAlarmDescriptor(
-          int index, monitoring.Monitoring.AlarmDescriptor value) {
-        if (alarmDescriptorBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.add(index, value);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder addAlarmDescriptor(
-          monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
-        if (alarmDescriptorBuilder_ == null) {
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.add(builderForValue.build());
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder addAlarmDescriptor(
-          int index, monitoring.Monitoring.AlarmDescriptor.Builder builderForValue) {
-        if (alarmDescriptorBuilder_ == null) {
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder addAllAlarmDescriptor(
-          java.lang.Iterable<? extends monitoring.Monitoring.AlarmDescriptor> values) {
-        if (alarmDescriptorBuilder_ == null) {
-          ensureAlarmDescriptorIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, alarmDescriptor_);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder clearAlarmDescriptor() {
-        if (alarmDescriptorBuilder_ == null) {
-          alarmDescriptor_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public Builder removeAlarmDescriptor(int index) {
-        if (alarmDescriptorBuilder_ == null) {
-          ensureAlarmDescriptorIsMutable();
-          alarmDescriptor_.remove(index);
-          onChanged();
-        } else {
-          alarmDescriptorBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmDescriptor.Builder getAlarmDescriptorBuilder(
-          int index) {
-        return getAlarmDescriptorFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmDescriptorOrBuilder getAlarmDescriptorOrBuilder(
-          int index) {
-        if (alarmDescriptorBuilder_ == null) {
-          return alarmDescriptor_.get(index);  } else {
-          return alarmDescriptorBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public java.util.List<? extends monitoring.Monitoring.AlarmDescriptorOrBuilder> 
-           getAlarmDescriptorOrBuilderList() {
-        if (alarmDescriptorBuilder_ != null) {
-          return alarmDescriptorBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(alarmDescriptor_);
-        }
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder() {
-        return getAlarmDescriptorFieldBuilder().addBuilder(
-            monitoring.Monitoring.AlarmDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public monitoring.Monitoring.AlarmDescriptor.Builder addAlarmDescriptorBuilder(
-          int index) {
-        return getAlarmDescriptorFieldBuilder().addBuilder(
-            index, monitoring.Monitoring.AlarmDescriptor.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .monitoring.AlarmDescriptor alarm_descriptor = 1;</code>
-       */
-      public java.util.List<monitoring.Monitoring.AlarmDescriptor.Builder> 
-           getAlarmDescriptorBuilderList() {
-        return getAlarmDescriptorFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder> 
-          getAlarmDescriptorFieldBuilder() {
-        if (alarmDescriptorBuilder_ == null) {
-          alarmDescriptorBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmDescriptor.Builder, monitoring.Monitoring.AlarmDescriptorOrBuilder>(
-                  alarmDescriptor_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          alarmDescriptor_ = null;
-        }
-        return alarmDescriptorBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:monitoring.AlarmList)
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmID_fieldAccessorTable;
 
-    // @@protoc_insertion_point(class_scope:monitoring.AlarmList)
-    private static final monitoring.Monitoring.AlarmList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new monitoring.Monitoring.AlarmList();
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmSubscription_descriptor;
 
-    public static monitoring.Monitoring.AlarmList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmSubscription_fieldAccessorTable;
 
-    private static final com.google.protobuf.Parser<AlarmList>
-        PARSER = new com.google.protobuf.AbstractParser<AlarmList>() {
-      @java.lang.Override
-      public AlarmList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AlarmList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<AlarmList> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmResponse_descriptor;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<AlarmList> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmResponse_fieldAccessorTable;
 
-    @java.lang.Override
-    public monitoring.Monitoring.AlarmList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_monitoring_AlarmList_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_monitoring_AlarmList_fieldAccessorTable;
+
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiDescriptor_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiDescriptor_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_MonitorKpiRequest_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiQuery_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiQuery_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpi_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpi_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpiList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpiList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_RawKpiTable_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_RawKpiTable_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_Kpi_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_Kpi_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiValueRange_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiValueRange_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiValue_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiValue_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_KpiDescriptorList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_KpiDescriptorList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_SubsDescriptor_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_SubsDescriptor_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_SubscriptionID_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_SubscriptionID_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_SubsResponse_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_SubsResponse_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_SubsList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_SubsList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_AlarmDescriptor_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_AlarmDescriptor_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_AlarmID_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_AlarmID_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_AlarmSubscription_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_AlarmSubscription_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_AlarmResponse_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_AlarmResponse_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_monitoring_AlarmList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_monitoring_AlarmList_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\020monitoring.proto\022\nmonitoring\032\rcontext." +
-      "proto\032\026kpi_sample_types.proto\"\231\003\n\rKpiDes" +
-      "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" +
-      "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" +
-      "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" +
-      "e_type\030\004 \001(\0162\037.kpi_sample_types.KpiSampl" +
-      "eType\022$\n\tdevice_id\030\005 \001(\0132\021.context.Devic" +
-      "eId\022(\n\013endpoint_id\030\006 \001(\0132\023.context.EndPo" +
-      "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" +
-      "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" +
-      "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" +
-      "ctionId\022 \n\007link_id\030\n \001(\0132\017.context.LinkI" +
-      "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" +
-      ".monitoring.KpiId\022\033\n\023monitoring_window_s" +
-      "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001\n\010KpiQ" +
-      "uery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring.KpiId" +
-      "\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016last_n_" +
-      "samples\030\003 \001(\r\022+\n\017start_timestamp\030\004 \001(\0132\022" +
-      ".context.Timestamp\022)\n\rend_timestamp\030\005 \001(" +
-      "\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n\ttimes" +
-      "tamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\tkpi_va" +
-      "lue\030\002 \001(\0132\024.monitoring.KpiValue\"U\n\nRawKp" +
-      "iList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId" +
-      "\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.RawKpi\"<" +
-      "\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003(\0132\026.m" +
-      "onitoring.RawKpiList\"&\n\005KpiId\022\035\n\006kpi_id\030" +
-      "\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 " +
-      "\001(\0132\021.monitoring.KpiId\022%\n\ttimestamp\030\002 \001(" +
-      "\0132\022.context.Timestamp\022\'\n\tkpi_value\030\003 \001(\013" +
-      "2\024.monitoring.KpiValue\"\250\001\n\rKpiValueRange" +
-      "\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring.KpiVa" +
-      "lue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitoring.Kp" +
-      "iValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017includeMinVal" +
-      "ue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"\241\001\n\010Kp" +
-      "iValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030" +
-      "\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuint64Val" +
-      "\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tstringVa" +
-      "l\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005value\"\'\n" +
-      "\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring.Kpi\"K" +
-      "\n\021KpiDescriptorList\0226\n\023kpi_descriptor_li" +
-      "st\030\001 \003(\0132\031.monitoring.KpiDescriptor\"\362\001\n\016" +
-      "SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032.monito" +
-      "ring.SubscriptionID\022!\n\006kpi_id\030\002 \001(\0132\021.mo" +
-      "nitoring.KpiId\022\033\n\023sampling_duration_s\030\003 " +
-      "\001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+\n\017star" +
-      "t_timestamp\030\005 \001(\0132\022.context.Timestamp\022)\n" +
-      "\rend_timestamp\030\006 \001(\0132\022.context.Timestamp" +
-      "\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(\0132\r.co" +
-      "ntext.Uuid\"b\n\014SubsResponse\022+\n\007subs_id\030\001 " +
-      "\001(\0132\032.monitoring.SubscriptionID\022%\n\010kpi_l" +
-      "ist\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010SubsLi" +
-      "st\0223\n\017subs_descriptor\030\001 \003(\0132\032.monitoring" +
-      ".SubsDescriptor\"\337\001\n\017AlarmDescriptor\022%\n\010a" +
-      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\031\n\021al" +
-      "arm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006k" +
-      "pi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017kpi_va" +
-      "lue_range\030\005 \001(\0132\031.monitoring.KpiValueRan" +
-      "ge\022%\n\ttimestamp\030\006 \001(\0132\022.context.Timestam" +
-      "p\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.context" +
-      ".Uuid\"}\n\021AlarmSubscription\022%\n\010alarm_id\030\001" +
-      " \001(\0132\023.monitoring.AlarmID\022\036\n\026subscriptio" +
-      "n_timeout_s\030\002 \001(\002\022!\n\031subscription_freque" +
-      "ncy_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010alarm_i" +
-      "d\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004text\030\002 \001" +
-      "(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring.KpiLis" +
-      "t\"B\n\tAlarmList\0225\n\020alarm_descriptor\030\001 \003(\013" +
-      "2\033.monitoring.AlarmDescriptor2\234\t\n\021Monito" +
-      "ringService\0228\n\006SetKpi\022\031.monitoring.KpiDe" +
-      "scriptor\032\021.monitoring.KpiId\"\000\0220\n\tDeleteK" +
-      "pi\022\021.monitoring.KpiId\032\016.context.Empty\"\000\022" +
-      "B\n\020GetKpiDescriptor\022\021.monitoring.KpiId\032\031" +
-      ".monitoring.KpiDescriptor\"\000\022G\n\024GetKpiDes" +
-      "criptorList\022\016.context.Empty\032\035.monitoring" +
-      ".KpiDescriptorList\"\000\022/\n\nIncludeKpi\022\017.mon" +
-      "itoring.Kpi\032\016.context.Empty\"\000\022=\n\nMonitor" +
-      "Kpi\022\035.monitoring.MonitorKpiRequest\032\016.con" +
-      "text.Empty\"\000\022?\n\014QueryKpiData\022\024.monitorin" +
-      "g.KpiQuery\032\027.monitoring.RawKpiTable\"\000\022N\n" +
-      "\022SetKpiSubscription\022\032.monitoring.SubsDes" +
-      "criptor\032\030.monitoring.SubsResponse\"\0000\001\022M\n" +
-      "\021GetSubsDescriptor\022\032.monitoring.Subscrip" +
-      "tionID\032\032.monitoring.SubsDescriptor\"\000\022:\n\020" +
-      "GetSubscriptions\022\016.context.Empty\032\024.monit" +
-      "oring.SubsList\"\000\022B\n\022DeleteSubscription\022\032" +
-      ".monitoring.SubscriptionID\032\016.context.Emp" +
-      "ty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.AlarmDe" +
-      "scriptor\032\023.monitoring.AlarmID\"\000\0224\n\tGetAl" +
-      "arms\022\016.context.Empty\032\025.monitoring.AlarmL" +
-      "ist\"\000\022H\n\022GetAlarmDescriptor\022\023.monitoring" +
-      ".AlarmID\032\033.monitoring.AlarmDescriptor\"\000\022" +
-      "V\n\026GetAlarmResponseStream\022\035.monitoring.A" +
-      "larmSubscription\032\031.monitoring.AlarmRespo" +
-      "nse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitoring.Alar" +
-      "mID\032\016.context.Empty\"\000\0226\n\014GetStreamKpi\022\021." +
-      "monitoring.KpiId\032\017.monitoring.Kpi\"\0000\001\0225\n" +
-      "\rGetInstantKpi\022\021.monitoring.KpiId\032\017.moni" +
-      "toring.Kpi\"\000b\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          context.ContextOuterClass.getDescriptor(),
-          kpi_sample_types.KpiSampleTypes.getDescriptor(),
-        });
-    internal_static_monitoring_KpiDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", "LinkId", });
-    internal_static_monitoring_MonitorKpiRequest_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_MonitorKpiRequest_descriptor,
-        new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS", });
-    internal_static_monitoring_KpiQuery_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_monitoring_KpiQuery_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiQuery_descriptor,
-        new java.lang.String[] { "KpiIds", "MonitoringWindowS", "LastNSamples", "StartTimestamp", "EndTimestamp", });
-    internal_static_monitoring_RawKpi_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_monitoring_RawKpi_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpi_descriptor,
-        new java.lang.String[] { "Timestamp", "KpiValue", });
-    internal_static_monitoring_RawKpiList_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_monitoring_RawKpiList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpiList_descriptor,
-        new java.lang.String[] { "KpiId", "RawKpis", });
-    internal_static_monitoring_RawKpiTable_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_monitoring_RawKpiTable_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_RawKpiTable_descriptor,
-        new java.lang.String[] { "RawKpiLists", });
-    internal_static_monitoring_KpiId_descriptor =
-      getDescriptor().getMessageTypes().get(6);
-    internal_static_monitoring_KpiId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiId_descriptor,
-        new java.lang.String[] { "KpiId", });
-    internal_static_monitoring_Kpi_descriptor =
-      getDescriptor().getMessageTypes().get(7);
-    internal_static_monitoring_Kpi_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_Kpi_descriptor,
-        new java.lang.String[] { "KpiId", "Timestamp", "KpiValue", });
-    internal_static_monitoring_KpiValueRange_descriptor =
-      getDescriptor().getMessageTypes().get(8);
-    internal_static_monitoring_KpiValueRange_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiValueRange_descriptor,
-        new java.lang.String[] { "KpiMinValue", "KpiMaxValue", "InRange", "IncludeMinValue", "IncludeMaxValue", });
-    internal_static_monitoring_KpiValue_descriptor =
-      getDescriptor().getMessageTypes().get(9);
-    internal_static_monitoring_KpiValue_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiValue_descriptor,
-        new java.lang.String[] { "Int32Val", "Uint32Val", "Int64Val", "Uint64Val", "FloatVal", "StringVal", "BoolVal", "Value", });
-    internal_static_monitoring_KpiList_descriptor =
-      getDescriptor().getMessageTypes().get(10);
-    internal_static_monitoring_KpiList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiList_descriptor,
-        new java.lang.String[] { "Kpi", });
-    internal_static_monitoring_KpiDescriptorList_descriptor =
-      getDescriptor().getMessageTypes().get(11);
-    internal_static_monitoring_KpiDescriptorList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_KpiDescriptorList_descriptor,
-        new java.lang.String[] { "KpiDescriptorList", });
-    internal_static_monitoring_SubsDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(12);
-    internal_static_monitoring_SubsDescriptor_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_SubsDescriptor_descriptor,
-        new java.lang.String[] { "SubsId", "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartTimestamp", "EndTimestamp", });
-    internal_static_monitoring_SubscriptionID_descriptor =
-      getDescriptor().getMessageTypes().get(13);
-    internal_static_monitoring_SubscriptionID_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_SubscriptionID_descriptor,
-        new java.lang.String[] { "SubsId", });
-    internal_static_monitoring_SubsResponse_descriptor =
-      getDescriptor().getMessageTypes().get(14);
-    internal_static_monitoring_SubsResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_SubsResponse_descriptor,
-        new java.lang.String[] { "SubsId", "KpiList", });
-    internal_static_monitoring_SubsList_descriptor =
-      getDescriptor().getMessageTypes().get(15);
-    internal_static_monitoring_SubsList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_SubsList_descriptor,
-        new java.lang.String[] { "SubsDescriptor", });
-    internal_static_monitoring_AlarmDescriptor_descriptor =
-      getDescriptor().getMessageTypes().get(16);
-    internal_static_monitoring_AlarmDescriptor_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_AlarmDescriptor_descriptor,
-        new java.lang.String[] { "AlarmId", "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp", });
-    internal_static_monitoring_AlarmID_descriptor =
-      getDescriptor().getMessageTypes().get(17);
-    internal_static_monitoring_AlarmID_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_AlarmID_descriptor,
-        new java.lang.String[] { "AlarmId", });
-    internal_static_monitoring_AlarmSubscription_descriptor =
-      getDescriptor().getMessageTypes().get(18);
-    internal_static_monitoring_AlarmSubscription_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_AlarmSubscription_descriptor,
-        new java.lang.String[] { "AlarmId", "SubscriptionTimeoutS", "SubscriptionFrequencyMs", });
-    internal_static_monitoring_AlarmResponse_descriptor =
-      getDescriptor().getMessageTypes().get(19);
-    internal_static_monitoring_AlarmResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_AlarmResponse_descriptor,
-        new java.lang.String[] { "AlarmId", "Text", "KpiList", });
-    internal_static_monitoring_AlarmList_descriptor =
-      getDescriptor().getMessageTypes().get(20);
-    internal_static_monitoring_AlarmList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_monitoring_AlarmList_descriptor,
-        new java.lang.String[] { "AlarmDescriptor", });
-    context.ContextOuterClass.getDescriptor();
-    kpi_sample_types.KpiSampleTypes.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
+
+    static {
+        java.lang.String[] descriptorData = { "\n\020monitoring.proto\022\nmonitoring\032\rcontext." + "proto\032\026kpi_sample_types.proto\"\231\003\n\rKpiDes" + "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" + "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" + "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" + "e_type\030\004 \001(\0162\037.kpi_sample_types.KpiSampl" + "eType\022$\n\tdevice_id\030\005 \001(\0132\021.context.Devic" + "eId\022(\n\013endpoint_id\030\006 \001(\0132\023.context.EndPo" + "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" + "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" + "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" + "ctionId\022 \n\007link_id\030\n \001(\0132\017.context.LinkI" + "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" + ".monitoring.KpiId\022\033\n\023monitoring_window_s" + "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001\n\010KpiQ" + "uery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring.KpiId" + "\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016last_n_" + "samples\030\003 \001(\r\022+\n\017start_timestamp\030\004 \001(\0132\022" + ".context.Timestamp\022)\n\rend_timestamp\030\005 \001(" + "\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n\ttimes" + "tamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\tkpi_va" + "lue\030\002 \001(\0132\024.monitoring.KpiValue\"U\n\nRawKp" + "iList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId" + "\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.RawKpi\"<" + "\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003(\0132\026.m" + "onitoring.RawKpiList\"&\n\005KpiId\022\035\n\006kpi_id\030" + "\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 " + "\001(\0132\021.monitoring.KpiId\022%\n\ttimestamp\030\002 \001(" + "\0132\022.context.Timestamp\022\'\n\tkpi_value\030\003 \001(\013" + "2\024.monitoring.KpiValue\"\250\001\n\rKpiValueRange" + "\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring.KpiVa" + "lue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitoring.Kp" + "iValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017includeMinVal" + "ue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"\241\001\n\010Kp" + "iValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030" + "\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuint64Val" + "\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tstringVa" + "l\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005value\"\'\n" + "\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring.Kpi\"K" + "\n\021KpiDescriptorList\0226\n\023kpi_descriptor_li" + "st\030\001 \003(\0132\031.monitoring.KpiDescriptor\"\362\001\n\016" + "SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032.monito" + "ring.SubscriptionID\022!\n\006kpi_id\030\002 \001(\0132\021.mo" + "nitoring.KpiId\022\033\n\023sampling_duration_s\030\003 " + "\001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+\n\017star" + "t_timestamp\030\005 \001(\0132\022.context.Timestamp\022)\n" + "\rend_timestamp\030\006 \001(\0132\022.context.Timestamp" + "\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(\0132\r.co" + "ntext.Uuid\"b\n\014SubsResponse\022+\n\007subs_id\030\001 " + "\001(\0132\032.monitoring.SubscriptionID\022%\n\010kpi_l" + "ist\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010SubsLi" + "st\0223\n\017subs_descriptor\030\001 \003(\0132\032.monitoring" + ".SubsDescriptor\"\337\001\n\017AlarmDescriptor\022%\n\010a" + "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\031\n\021al" + "arm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006k" + "pi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017kpi_va" + "lue_range\030\005 \001(\0132\031.monitoring.KpiValueRan" + "ge\022%\n\ttimestamp\030\006 \001(\0132\022.context.Timestam" + "p\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.context" + ".Uuid\"}\n\021AlarmSubscription\022%\n\010alarm_id\030\001" + " \001(\0132\023.monitoring.AlarmID\022\036\n\026subscriptio" + "n_timeout_s\030\002 \001(\002\022!\n\031subscription_freque" + "ncy_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010alarm_i" + "d\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004text\030\002 \001" + "(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring.KpiLis" + "t\"B\n\tAlarmList\0225\n\020alarm_descriptor\030\001 \003(\013" + "2\033.monitoring.AlarmDescriptor2\234\t\n\021Monito" + "ringService\0228\n\006SetKpi\022\031.monitoring.KpiDe" + "scriptor\032\021.monitoring.KpiId\"\000\0220\n\tDeleteK" + "pi\022\021.monitoring.KpiId\032\016.context.Empty\"\000\022" + "B\n\020GetKpiDescriptor\022\021.monitoring.KpiId\032\031" + ".monitoring.KpiDescriptor\"\000\022G\n\024GetKpiDes" + "criptorList\022\016.context.Empty\032\035.monitoring" + ".KpiDescriptorList\"\000\022/\n\nIncludeKpi\022\017.mon" + "itoring.Kpi\032\016.context.Empty\"\000\022=\n\nMonitor" + "Kpi\022\035.monitoring.MonitorKpiRequest\032\016.con" + "text.Empty\"\000\022?\n\014QueryKpiData\022\024.monitorin" + "g.KpiQuery\032\027.monitoring.RawKpiTable\"\000\022N\n" + "\022SetKpiSubscription\022\032.monitoring.SubsDes" + "criptor\032\030.monitoring.SubsResponse\"\0000\001\022M\n" + "\021GetSubsDescriptor\022\032.monitoring.Subscrip" + "tionID\032\032.monitoring.SubsDescriptor\"\000\022:\n\020" + "GetSubscriptions\022\016.context.Empty\032\024.monit" + "oring.SubsList\"\000\022B\n\022DeleteSubscription\022\032" + ".monitoring.SubscriptionID\032\016.context.Emp" + "ty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.AlarmDe" + "scriptor\032\023.monitoring.AlarmID\"\000\0224\n\tGetAl" + "arms\022\016.context.Empty\032\025.monitoring.AlarmL" + "ist\"\000\022H\n\022GetAlarmDescriptor\022\023.monitoring" + ".AlarmID\032\033.monitoring.AlarmDescriptor\"\000\022" + "V\n\026GetAlarmResponseStream\022\035.monitoring.A" + "larmSubscription\032\031.monitoring.AlarmRespo" + "nse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitoring.Alar" + "mID\032\016.context.Empty\"\000\0226\n\014GetStreamKpi\022\021." + "monitoring.KpiId\032\017.monitoring.Kpi\"\0000\001\0225\n" + "\rGetInstantKpi\022\021.monitoring.KpiId\032\017.moni" + "toring.Kpi\"\000b\006proto3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { context.ContextOuterClass.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
+        internal_static_monitoring_KpiDescriptor_descriptor = getDescriptor().getMessageTypes().get(0);
+        internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiDescriptor_descriptor, new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", "LinkId" });
+        internal_static_monitoring_MonitorKpiRequest_descriptor = getDescriptor().getMessageTypes().get(1);
+        internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_MonitorKpiRequest_descriptor, new java.lang.String[] { "KpiId", "MonitoringWindowS", "SamplingRateS" });
+        internal_static_monitoring_KpiQuery_descriptor = getDescriptor().getMessageTypes().get(2);
+        internal_static_monitoring_KpiQuery_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiQuery_descriptor, new java.lang.String[] { "KpiIds", "MonitoringWindowS", "LastNSamples", "StartTimestamp", "EndTimestamp" });
+        internal_static_monitoring_RawKpi_descriptor = getDescriptor().getMessageTypes().get(3);
+        internal_static_monitoring_RawKpi_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_RawKpi_descriptor, new java.lang.String[] { "Timestamp", "KpiValue" });
+        internal_static_monitoring_RawKpiList_descriptor = getDescriptor().getMessageTypes().get(4);
+        internal_static_monitoring_RawKpiList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_RawKpiList_descriptor, new java.lang.String[] { "KpiId", "RawKpis" });
+        internal_static_monitoring_RawKpiTable_descriptor = getDescriptor().getMessageTypes().get(5);
+        internal_static_monitoring_RawKpiTable_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_RawKpiTable_descriptor, new java.lang.String[] { "RawKpiLists" });
+        internal_static_monitoring_KpiId_descriptor = getDescriptor().getMessageTypes().get(6);
+        internal_static_monitoring_KpiId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiId_descriptor, new java.lang.String[] { "KpiId" });
+        internal_static_monitoring_Kpi_descriptor = getDescriptor().getMessageTypes().get(7);
+        internal_static_monitoring_Kpi_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_Kpi_descriptor, new java.lang.String[] { "KpiId", "Timestamp", "KpiValue" });
+        internal_static_monitoring_KpiValueRange_descriptor = getDescriptor().getMessageTypes().get(8);
+        internal_static_monitoring_KpiValueRange_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiValueRange_descriptor, new java.lang.String[] { "KpiMinValue", "KpiMaxValue", "InRange", "IncludeMinValue", "IncludeMaxValue" });
+        internal_static_monitoring_KpiValue_descriptor = getDescriptor().getMessageTypes().get(9);
+        internal_static_monitoring_KpiValue_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiValue_descriptor, new java.lang.String[] { "Int32Val", "Uint32Val", "Int64Val", "Uint64Val", "FloatVal", "StringVal", "BoolVal", "Value" });
+        internal_static_monitoring_KpiList_descriptor = getDescriptor().getMessageTypes().get(10);
+        internal_static_monitoring_KpiList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiList_descriptor, new java.lang.String[] { "Kpi" });
+        internal_static_monitoring_KpiDescriptorList_descriptor = getDescriptor().getMessageTypes().get(11);
+        internal_static_monitoring_KpiDescriptorList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_KpiDescriptorList_descriptor, new java.lang.String[] { "KpiDescriptorList" });
+        internal_static_monitoring_SubsDescriptor_descriptor = getDescriptor().getMessageTypes().get(12);
+        internal_static_monitoring_SubsDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_SubsDescriptor_descriptor, new java.lang.String[] { "SubsId", "KpiId", "SamplingDurationS", "SamplingIntervalS", "StartTimestamp", "EndTimestamp" });
+        internal_static_monitoring_SubscriptionID_descriptor = getDescriptor().getMessageTypes().get(13);
+        internal_static_monitoring_SubscriptionID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_SubscriptionID_descriptor, new java.lang.String[] { "SubsId" });
+        internal_static_monitoring_SubsResponse_descriptor = getDescriptor().getMessageTypes().get(14);
+        internal_static_monitoring_SubsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_SubsResponse_descriptor, new java.lang.String[] { "SubsId", "KpiList" });
+        internal_static_monitoring_SubsList_descriptor = getDescriptor().getMessageTypes().get(15);
+        internal_static_monitoring_SubsList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_SubsList_descriptor, new java.lang.String[] { "SubsDescriptor" });
+        internal_static_monitoring_AlarmDescriptor_descriptor = getDescriptor().getMessageTypes().get(16);
+        internal_static_monitoring_AlarmDescriptor_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_AlarmDescriptor_descriptor, new java.lang.String[] { "AlarmId", "AlarmDescription", "Name", "KpiId", "KpiValueRange", "Timestamp" });
+        internal_static_monitoring_AlarmID_descriptor = getDescriptor().getMessageTypes().get(17);
+        internal_static_monitoring_AlarmID_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_AlarmID_descriptor, new java.lang.String[] { "AlarmId" });
+        internal_static_monitoring_AlarmSubscription_descriptor = getDescriptor().getMessageTypes().get(18);
+        internal_static_monitoring_AlarmSubscription_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_AlarmSubscription_descriptor, new java.lang.String[] { "AlarmId", "SubscriptionTimeoutS", "SubscriptionFrequencyMs" });
+        internal_static_monitoring_AlarmResponse_descriptor = getDescriptor().getMessageTypes().get(19);
+        internal_static_monitoring_AlarmResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_AlarmResponse_descriptor, new java.lang.String[] { "AlarmId", "Text", "KpiList" });
+        internal_static_monitoring_AlarmList_descriptor = getDescriptor().getMessageTypes().get(20);
+        internal_static_monitoring_AlarmList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_monitoring_AlarmList_descriptor, new java.lang.String[] { "AlarmDescriptor" });
+        context.ContextOuterClass.getDescriptor();
+        kpi_sample_types.KpiSampleTypes.getDescriptor();
+    }
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java
index 0ce30559b2c0a1bb6236431482d6b99b82cf0842..69f4d6c684168616461957869134bc154c70a018 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java
@@ -1,50 +1,43 @@
 package monitoring;
 
-import io.quarkus.grpc.runtime.MutinyService;
+import io.quarkus.grpc.MutinyService;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: monitoring.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: monitoring.proto")
 public interface MonitoringService extends MutinyService {
 
-    
     io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request);
-    
+
     io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request);
-    
+
     io.smallrye.mutiny.Uni<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request);
-    
-    
+
     io.smallrye.mutiny.Multi<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request);
-    
+
     io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request);
-    
-    io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request);
-    
-    
 
-}
\ No newline at end of file
+    io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request);
+}
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
index cbc984e7132bdbf22c9b99a510106c5c6f4cbda7..d1278aa92d910fc83219363c19ee19546156b467 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
@@ -2,165 +2,176 @@ package monitoring;
 
 import io.grpc.BindableService;
 import io.quarkus.grpc.GrpcService;
-import io.quarkus.grpc.runtime.MutinyBean;
+import io.quarkus.grpc.MutinyBean;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: monitoring.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: monitoring.proto")
 public class MonitoringServiceBean extends MutinyMonitoringServiceGrpc.MonitoringServiceImplBase implements BindableService, MutinyBean {
 
     private final MonitoringService delegate;
 
     MonitoringServiceBean(@GrpcService MonitoringService delegate) {
-       this.delegate = delegate;
+        this.delegate = delegate;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
-       try {
-         return delegate.setKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
-       try {
-         return delegate.deleteKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.deleteKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
-       try {
-         return delegate.getKpiDescriptor(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getKpiDescriptor(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getKpiDescriptorList(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getKpiDescriptorList(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
-       try {
-         return delegate.includeKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.includeKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
-       try {
-         return delegate.monitorKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.monitorKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
-       try {
-         return delegate.queryKpiData(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.queryKpiData(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
-       try {
-         return delegate.getSubsDescriptor(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getSubsDescriptor(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getSubscriptions(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getSubscriptions(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
-       try {
-         return delegate.deleteSubscription(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.deleteSubscription(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-       try {
-         return delegate.setKpiAlarm(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setKpiAlarm(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.getAlarms(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getAlarms(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
-       try {
-         return delegate.getAlarmDescriptor(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getAlarmDescriptor(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
-       try {
-         return delegate.deleteAlarm(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.deleteAlarm(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request) {
-       try {
-         return delegate.getInstantKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getInstantKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
-       try {
-         return delegate.setKpiSubscription(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.setKpiSubscription(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
-       try {
-         return delegate.getAlarmResponseStream(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getAlarmResponseStream(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
-       try {
-         return delegate.getStreamKpi(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.getStreamKpi(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
index 0e8ff5d1b8929694b49548984cd7d53f9c8f68a4..3e7a9cc26a91fecbbce3aa3ceecb05dde89aaaa7 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
@@ -1,99 +1,117 @@
 package monitoring;
 
 import java.util.function.BiFunction;
+import io.quarkus.grpc.MutinyClient;
 
-import io.quarkus.grpc.runtime.MutinyClient;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: monitoring.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: monitoring.proto")
 public class MonitoringServiceClient implements MonitoringService, MutinyClient<MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub> {
 
     private final MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub stub;
 
     public MonitoringServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub, MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub> stubConfigurator) {
-       this.stub = stubConfigurator.apply(name,MutinyMonitoringServiceGrpc.newMutinyStub(channel));
+        this.stub = stubConfigurator.apply(name, MutinyMonitoringServiceGrpc.newMutinyStub(channel));
+    }
+
+    private MonitoringServiceClient(MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub stub) {
+        this.stub = stub;
+    }
+
+    public MonitoringServiceClient newInstanceWithStub(MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub stub) {
+        return new MonitoringServiceClient(stub);
     }
 
     @Override
     public MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub getStub() {
-       return stub;
+        return stub;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
-       return stub.setKpi(request);
+        return stub.setKpi(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
-       return stub.deleteKpi(request);
+        return stub.deleteKpi(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
-       return stub.getKpiDescriptor(request);
+        return stub.getKpiDescriptor(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-       return stub.getKpiDescriptorList(request);
+        return stub.getKpiDescriptorList(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
-       return stub.includeKpi(request);
+        return stub.includeKpi(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
-       return stub.monitorKpi(request);
+        return stub.monitorKpi(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
-       return stub.queryKpiData(request);
+        return stub.queryKpiData(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
-       return stub.getSubsDescriptor(request);
+        return stub.getSubsDescriptor(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request) {
-       return stub.getSubscriptions(request);
+        return stub.getSubscriptions(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
-       return stub.deleteSubscription(request);
+        return stub.deleteSubscription(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-       return stub.setKpiAlarm(request);
+        return stub.setKpiAlarm(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request) {
-       return stub.getAlarms(request);
+        return stub.getAlarms(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
-       return stub.getAlarmDescriptor(request);
+        return stub.getAlarmDescriptor(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
-       return stub.deleteAlarm(request);
+        return stub.deleteAlarm(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request) {
-       return stub.getInstantKpi(request);
+        return stub.getInstantKpi(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
-       return stub.setKpiSubscription(request);
+        return stub.setKpiSubscription(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
-       return stub.getAlarmResponseStream(request);
+        return stub.getAlarmResponseStream(request);
     }
 
     @Override
     public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
-       return stub.getStreamKpi(request);
+        return stub.getStreamKpi(request);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
index c5f55b3b44c03ea8f5377ce11e3c3e547da5ef06..7a275e5777320134c04591f4d9c29e23035148bf 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
@@ -4,1509 +4,975 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.38.1)",
-    comments = "Source: monitoring.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: monitoring.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class MonitoringServiceGrpc {
 
-  private MonitoringServiceGrpc() {}
+    private MonitoringServiceGrpc() {
+    }
 
-  public static final String SERVICE_NAME = "monitoring.MonitoringService";
+    public static final String SERVICE_NAME = "monitoring.MonitoringService";
 
-  // Static method descriptors that strictly reflect the proto.
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor,
-      monitoring.Monitoring.KpiId> getSetKpiMethod;
+    // Static method descriptors that strictly reflect the proto.
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getSetKpiMethod;
 
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetKpi",
-      requestType = monitoring.Monitoring.KpiDescriptor.class,
-      responseType = monitoring.Monitoring.KpiId.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor,
-      monitoring.Monitoring.KpiId> getSetKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getSetKpiMethod;
-    if ((getSetKpiMethod = MonitoringServiceGrpc.getSetKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetKpi", requestType = monitoring.Monitoring.KpiDescriptor.class, responseType = monitoring.Monitoring.KpiId.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getSetKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId> getSetKpiMethod;
         if ((getSetKpiMethod = MonitoringServiceGrpc.getSetKpiMethod) == null) {
-          MonitoringServiceGrpc.getSetKpiMethod = getSetKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiDescriptor.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpi"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getSetKpiMethod = MonitoringServiceGrpc.getSetKpiMethod) == null) {
+                    MonitoringServiceGrpc.getSetKpiMethod = getSetKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiDescriptor.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiId.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpi")).build();
+                }
+            }
+        }
+        return getSetKpiMethod;
     }
-    return getSetKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      context.ContextOuterClass.Empty> getDeleteKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "DeleteKpi",
-      requestType = monitoring.Monitoring.KpiId.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      context.ContextOuterClass.Empty> getDeleteKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod;
-    if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteKpi", requestType = monitoring.Monitoring.KpiId.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty> getDeleteKpiMethod;
         if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
-          MonitoringServiceGrpc.getDeleteKpiMethod = getDeleteKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteKpi"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getDeleteKpiMethod = MonitoringServiceGrpc.getDeleteKpiMethod) == null) {
+                    MonitoringServiceGrpc.getDeleteKpiMethod = getDeleteKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteKpi")).build();
+                }
+            }
+        }
+        return getDeleteKpiMethod;
     }
-    return getDeleteKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptor",
-      requestType = monitoring.Monitoring.KpiId.class,
-      responseType = monitoring.Monitoring.KpiDescriptor.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
-    if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptor", requestType = monitoring.Monitoring.KpiId.class, responseType = monitoring.Monitoring.KpiDescriptor.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor> getGetKpiDescriptorMethod;
         if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
-          MonitoringServiceGrpc.getGetKpiDescriptorMethod = getGetKpiDescriptorMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptor"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiDescriptor.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptor"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetKpiDescriptorMethod = MonitoringServiceGrpc.getGetKpiDescriptorMethod) == null) {
+                    MonitoringServiceGrpc.getGetKpiDescriptorMethod = getGetKpiDescriptorMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptor")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiDescriptor.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptor")).build();
+                }
+            }
+        }
+        return getGetKpiDescriptorMethod;
     }
-    return getGetKpiDescriptorMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptorList",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = monitoring.Monitoring.KpiDescriptorList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod;
-    if ((getGetKpiDescriptorListMethod = MonitoringServiceGrpc.getGetKpiDescriptorListMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetKpiDescriptorList", requestType = context.ContextOuterClass.Empty.class, responseType = monitoring.Monitoring.KpiDescriptorList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList> getGetKpiDescriptorListMethod;
         if ((getGetKpiDescriptorListMethod = MonitoringServiceGrpc.getGetKpiDescriptorListMethod) == null) {
-          MonitoringServiceGrpc.getGetKpiDescriptorListMethod = getGetKpiDescriptorListMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptorList"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiDescriptorList.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptorList"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetKpiDescriptorListMethod = MonitoringServiceGrpc.getGetKpiDescriptorListMethod) == null) {
+                    MonitoringServiceGrpc.getGetKpiDescriptorListMethod = getGetKpiDescriptorListMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetKpiDescriptorList")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiDescriptorList.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetKpiDescriptorList")).build();
+                }
+            }
+        }
+        return getGetKpiDescriptorListMethod;
     }
-    return getGetKpiDescriptorListMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi,
-      context.ContextOuterClass.Empty> getIncludeKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "IncludeKpi",
-      requestType = monitoring.Monitoring.Kpi.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi,
-      context.ContextOuterClass.Empty> getIncludeKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty> getIncludeKpiMethod;
-    if ((getIncludeKpiMethod = MonitoringServiceGrpc.getIncludeKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty> getIncludeKpiMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "IncludeKpi", requestType = monitoring.Monitoring.Kpi.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty> getIncludeKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty> getIncludeKpiMethod;
         if ((getIncludeKpiMethod = MonitoringServiceGrpc.getIncludeKpiMethod) == null) {
-          MonitoringServiceGrpc.getIncludeKpiMethod = getIncludeKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "IncludeKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.Kpi.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("IncludeKpi"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getIncludeKpiMethod = MonitoringServiceGrpc.getIncludeKpiMethod) == null) {
+                    MonitoringServiceGrpc.getIncludeKpiMethod = getIncludeKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "IncludeKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.Kpi.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("IncludeKpi")).build();
+                }
+            }
+        }
+        return getIncludeKpiMethod;
     }
-    return getIncludeKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest,
-      context.ContextOuterClass.Empty> getMonitorKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "MonitorKpi",
-      requestType = monitoring.Monitoring.MonitorKpiRequest.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest,
-      context.ContextOuterClass.Empty> getMonitorKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty> getMonitorKpiMethod;
-    if ((getMonitorKpiMethod = MonitoringServiceGrpc.getMonitorKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty> getMonitorKpiMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "MonitorKpi", requestType = monitoring.Monitoring.MonitorKpiRequest.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty> getMonitorKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty> getMonitorKpiMethod;
         if ((getMonitorKpiMethod = MonitoringServiceGrpc.getMonitorKpiMethod) == null) {
-          MonitoringServiceGrpc.getMonitorKpiMethod = getMonitorKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "MonitorKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("MonitorKpi"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getMonitorKpiMethod = MonitoringServiceGrpc.getMonitorKpiMethod) == null) {
+                    MonitoringServiceGrpc.getMonitorKpiMethod = getMonitorKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "MonitorKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.MonitorKpiRequest.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("MonitorKpi")).build();
+                }
+            }
+        }
+        return getMonitorKpiMethod;
     }
-    return getMonitorKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery,
-      monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "QueryKpiData",
-      requestType = monitoring.Monitoring.KpiQuery.class,
-      responseType = monitoring.Monitoring.RawKpiTable.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery,
-      monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
-    if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "QueryKpiData", requestType = monitoring.Monitoring.KpiQuery.class, responseType = monitoring.Monitoring.RawKpiTable.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable> getQueryKpiDataMethod;
         if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) {
-          MonitoringServiceGrpc.getQueryKpiDataMethod = getQueryKpiDataMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "QueryKpiData"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiQuery.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.RawKpiTable.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("QueryKpiData"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getQueryKpiDataMethod = MonitoringServiceGrpc.getQueryKpiDataMethod) == null) {
+                    MonitoringServiceGrpc.getQueryKpiDataMethod = getQueryKpiDataMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "QueryKpiData")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiQuery.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.RawKpiTable.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("QueryKpiData")).build();
+                }
+            }
+        }
+        return getQueryKpiDataMethod;
     }
-    return getQueryKpiDataMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetKpiSubscription",
-      requestType = monitoring.Monitoring.SubsDescriptor.class,
-      responseType = monitoring.Monitoring.SubsResponse.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor,
-      monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod;
-    if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetKpiSubscription", requestType = monitoring.Monitoring.SubsDescriptor.class, responseType = monitoring.Monitoring.SubsResponse.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse> getSetKpiSubscriptionMethod;
         if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) {
-          MonitoringServiceGrpc.getSetKpiSubscriptionMethod = getSetKpiSubscriptionMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiSubscription"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubsDescriptor.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubsResponse.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiSubscription"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getSetKpiSubscriptionMethod = MonitoringServiceGrpc.getSetKpiSubscriptionMethod) == null) {
+                    MonitoringServiceGrpc.getSetKpiSubscriptionMethod = getSetKpiSubscriptionMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiSubscription")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubsDescriptor.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubsResponse.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiSubscription")).build();
+                }
+            }
+        }
+        return getSetKpiSubscriptionMethod;
     }
-    return getSetKpiSubscriptionMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
-      monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetSubsDescriptor",
-      requestType = monitoring.Monitoring.SubscriptionID.class,
-      responseType = monitoring.Monitoring.SubsDescriptor.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
-      monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod;
-    if ((getGetSubsDescriptorMethod = MonitoringServiceGrpc.getGetSubsDescriptorMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetSubsDescriptor", requestType = monitoring.Monitoring.SubscriptionID.class, responseType = monitoring.Monitoring.SubsDescriptor.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor> getGetSubsDescriptorMethod;
         if ((getGetSubsDescriptorMethod = MonitoringServiceGrpc.getGetSubsDescriptorMethod) == null) {
-          MonitoringServiceGrpc.getGetSubsDescriptorMethod = getGetSubsDescriptorMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSubsDescriptor"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubscriptionID.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubsDescriptor.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetSubsDescriptor"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetSubsDescriptorMethod = MonitoringServiceGrpc.getGetSubsDescriptorMethod) == null) {
+                    MonitoringServiceGrpc.getGetSubsDescriptorMethod = getGetSubsDescriptorMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSubsDescriptor")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubscriptionID.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubsDescriptor.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetSubsDescriptor")).build();
+                }
+            }
+        }
+        return getGetSubsDescriptorMethod;
     }
-    return getGetSubsDescriptorMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.SubsList> getGetSubscriptionsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetSubscriptions",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = monitoring.Monitoring.SubsList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.SubsList> getGetSubscriptionsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList> getGetSubscriptionsMethod;
-    if ((getGetSubscriptionsMethod = MonitoringServiceGrpc.getGetSubscriptionsMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList> getGetSubscriptionsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetSubscriptions", requestType = context.ContextOuterClass.Empty.class, responseType = monitoring.Monitoring.SubsList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList> getGetSubscriptionsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList> getGetSubscriptionsMethod;
         if ((getGetSubscriptionsMethod = MonitoringServiceGrpc.getGetSubscriptionsMethod) == null) {
-          MonitoringServiceGrpc.getGetSubscriptionsMethod = getGetSubscriptionsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSubscriptions"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubsList.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetSubscriptions"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetSubscriptionsMethod = MonitoringServiceGrpc.getGetSubscriptionsMethod) == null) {
+                    MonitoringServiceGrpc.getGetSubscriptionsMethod = getGetSubscriptionsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetSubscriptions")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubsList.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetSubscriptions")).build();
+                }
+            }
+        }
+        return getGetSubscriptionsMethod;
     }
-    return getGetSubscriptionsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
-      context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "DeleteSubscription",
-      requestType = monitoring.Monitoring.SubscriptionID.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID,
-      context.ContextOuterClass.Empty> getDeleteSubscriptionMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
-    if ((getDeleteSubscriptionMethod = MonitoringServiceGrpc.getDeleteSubscriptionMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteSubscription", requestType = monitoring.Monitoring.SubscriptionID.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty> getDeleteSubscriptionMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty> getDeleteSubscriptionMethod;
         if ((getDeleteSubscriptionMethod = MonitoringServiceGrpc.getDeleteSubscriptionMethod) == null) {
-          MonitoringServiceGrpc.getDeleteSubscriptionMethod = getDeleteSubscriptionMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteSubscription"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.SubscriptionID.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteSubscription"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getDeleteSubscriptionMethod = MonitoringServiceGrpc.getDeleteSubscriptionMethod) == null) {
+                    MonitoringServiceGrpc.getDeleteSubscriptionMethod = getDeleteSubscriptionMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteSubscription")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.SubscriptionID.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteSubscription")).build();
+                }
+            }
+        }
+        return getDeleteSubscriptionMethod;
     }
-    return getDeleteSubscriptionMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "SetKpiAlarm",
-      requestType = monitoring.Monitoring.AlarmDescriptor.class,
-      responseType = monitoring.Monitoring.AlarmID.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor,
-      monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
-    if ((getSetKpiAlarmMethod = MonitoringServiceGrpc.getSetKpiAlarmMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "SetKpiAlarm", requestType = monitoring.Monitoring.AlarmDescriptor.class, responseType = monitoring.Monitoring.AlarmID.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID> getSetKpiAlarmMethod;
         if ((getSetKpiAlarmMethod = MonitoringServiceGrpc.getSetKpiAlarmMethod) == null) {
-          MonitoringServiceGrpc.getSetKpiAlarmMethod = getSetKpiAlarmMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiAlarm"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmID.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiAlarm"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getSetKpiAlarmMethod = MonitoringServiceGrpc.getSetKpiAlarmMethod) == null) {
+                    MonitoringServiceGrpc.getSetKpiAlarmMethod = getSetKpiAlarmMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "SetKpiAlarm")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmDescriptor.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmID.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("SetKpiAlarm")).build();
+                }
+            }
+        }
+        return getSetKpiAlarmMethod;
     }
-    return getSetKpiAlarmMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.AlarmList> getGetAlarmsMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetAlarms",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = monitoring.Monitoring.AlarmList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      monitoring.Monitoring.AlarmList> getGetAlarmsMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList> getGetAlarmsMethod;
-    if ((getGetAlarmsMethod = MonitoringServiceGrpc.getGetAlarmsMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList> getGetAlarmsMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetAlarms", requestType = context.ContextOuterClass.Empty.class, responseType = monitoring.Monitoring.AlarmList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList> getGetAlarmsMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList> getGetAlarmsMethod;
         if ((getGetAlarmsMethod = MonitoringServiceGrpc.getGetAlarmsMethod) == null) {
-          MonitoringServiceGrpc.getGetAlarmsMethod = getGetAlarmsMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarms"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmList.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarms"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetAlarmsMethod = MonitoringServiceGrpc.getGetAlarmsMethod) == null) {
+                    MonitoringServiceGrpc.getGetAlarmsMethod = getGetAlarmsMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarms")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmList.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarms")).build();
+                }
+            }
+        }
+        return getGetAlarmsMethod;
     }
-    return getGetAlarmsMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
-      monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetAlarmDescriptor",
-      requestType = monitoring.Monitoring.AlarmID.class,
-      responseType = monitoring.Monitoring.AlarmDescriptor.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
-      monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod;
-    if ((getGetAlarmDescriptorMethod = MonitoringServiceGrpc.getGetAlarmDescriptorMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetAlarmDescriptor", requestType = monitoring.Monitoring.AlarmID.class, responseType = monitoring.Monitoring.AlarmDescriptor.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor> getGetAlarmDescriptorMethod;
         if ((getGetAlarmDescriptorMethod = MonitoringServiceGrpc.getGetAlarmDescriptorMethod) == null) {
-          MonitoringServiceGrpc.getGetAlarmDescriptorMethod = getGetAlarmDescriptorMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarmDescriptor"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmID.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmDescriptor.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarmDescriptor"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetAlarmDescriptorMethod = MonitoringServiceGrpc.getGetAlarmDescriptorMethod) == null) {
+                    MonitoringServiceGrpc.getGetAlarmDescriptorMethod = getGetAlarmDescriptorMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarmDescriptor")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmID.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmDescriptor.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarmDescriptor")).build();
+                }
+            }
+        }
+        return getGetAlarmDescriptorMethod;
     }
-    return getGetAlarmDescriptorMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription,
-      monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetAlarmResponseStream",
-      requestType = monitoring.Monitoring.AlarmSubscription.class,
-      responseType = monitoring.Monitoring.AlarmResponse.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription,
-      monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
-    if ((getGetAlarmResponseStreamMethod = MonitoringServiceGrpc.getGetAlarmResponseStreamMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetAlarmResponseStream", requestType = monitoring.Monitoring.AlarmSubscription.class, responseType = monitoring.Monitoring.AlarmResponse.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse> getGetAlarmResponseStreamMethod;
         if ((getGetAlarmResponseStreamMethod = MonitoringServiceGrpc.getGetAlarmResponseStreamMethod) == null) {
-          MonitoringServiceGrpc.getGetAlarmResponseStreamMethod = getGetAlarmResponseStreamMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarmResponseStream"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmSubscription.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmResponse.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarmResponseStream"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetAlarmResponseStreamMethod = MonitoringServiceGrpc.getGetAlarmResponseStreamMethod) == null) {
+                    MonitoringServiceGrpc.getGetAlarmResponseStreamMethod = getGetAlarmResponseStreamMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetAlarmResponseStream")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmSubscription.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmResponse.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetAlarmResponseStream")).build();
+                }
+            }
+        }
+        return getGetAlarmResponseStreamMethod;
     }
-    return getGetAlarmResponseStreamMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
-      context.ContextOuterClass.Empty> getDeleteAlarmMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "DeleteAlarm",
-      requestType = monitoring.Monitoring.AlarmID.class,
-      responseType = context.ContextOuterClass.Empty.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID,
-      context.ContextOuterClass.Empty> getDeleteAlarmMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty> getDeleteAlarmMethod;
-    if ((getDeleteAlarmMethod = MonitoringServiceGrpc.getDeleteAlarmMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty> getDeleteAlarmMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "DeleteAlarm", requestType = monitoring.Monitoring.AlarmID.class, responseType = context.ContextOuterClass.Empty.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty> getDeleteAlarmMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty> getDeleteAlarmMethod;
         if ((getDeleteAlarmMethod = MonitoringServiceGrpc.getDeleteAlarmMethod) == null) {
-          MonitoringServiceGrpc.getDeleteAlarmMethod = getDeleteAlarmMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteAlarm"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.AlarmID.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteAlarm"))
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getDeleteAlarmMethod = MonitoringServiceGrpc.getDeleteAlarmMethod) == null) {
+                    MonitoringServiceGrpc.getDeleteAlarmMethod = getDeleteAlarmMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "DeleteAlarm")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.AlarmID.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("DeleteAlarm")).build();
+                }
+            }
+        }
+        return getDeleteAlarmMethod;
     }
-    return getDeleteAlarmMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetStreamKpi",
-      requestType = monitoring.Monitoring.KpiId.class,
-      responseType = monitoring.Monitoring.Kpi.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.Kpi> getGetStreamKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
-    if ((getGetStreamKpiMethod = MonitoringServiceGrpc.getGetStreamKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetStreamKpi", requestType = monitoring.Monitoring.KpiId.class, responseType = monitoring.Monitoring.Kpi.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetStreamKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetStreamKpiMethod;
         if ((getGetStreamKpiMethod = MonitoringServiceGrpc.getGetStreamKpiMethod) == null) {
-          MonitoringServiceGrpc.getGetStreamKpiMethod = getGetStreamKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStreamKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.Kpi.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetStreamKpi"))
-              .build();
-        }
-      }
-    }
-    return getGetStreamKpiMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.Kpi> getGetInstantKpiMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "GetInstantKpi",
-      requestType = monitoring.Monitoring.KpiId.class,
-      responseType = monitoring.Monitoring.Kpi.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId,
-      monitoring.Monitoring.Kpi> getGetInstantKpiMethod() {
-    io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetInstantKpiMethod;
-    if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
-      synchronized (MonitoringServiceGrpc.class) {
-        if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
-          MonitoringServiceGrpc.getGetInstantKpiMethod = getGetInstantKpiMethod =
-              io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInstantKpi"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.KpiId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  monitoring.Monitoring.Kpi.getDefaultInstance()))
-              .setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetInstantKpi"))
-              .build();
-        }
-      }
-    }
-    return getGetInstantKpiMethod;
-  }
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static MonitoringServiceStub newStub(io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceStub>() {
-        @java.lang.Override
-        public MonitoringServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new MonitoringServiceStub(channel, callOptions);
-        }
-      };
-    return MonitoringServiceStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static MonitoringServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceBlockingStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceBlockingStub>() {
-        @java.lang.Override
-        public MonitoringServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new MonitoringServiceBlockingStub(channel, callOptions);
-        }
-      };
-    return MonitoringServiceBlockingStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary calls on the service
-   */
-  public static MonitoringServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceFutureStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceFutureStub>() {
-        @java.lang.Override
-        public MonitoringServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new MonitoringServiceFutureStub(channel, callOptions);
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetStreamKpiMethod = MonitoringServiceGrpc.getGetStreamKpiMethod) == null) {
+                    MonitoringServiceGrpc.getGetStreamKpiMethod = getGetStreamKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetStreamKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.Kpi.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetStreamKpi")).build();
+                }
+            }
         }
-      };
-    return MonitoringServiceFutureStub.newStub(factory, channel);
-  }
+        return getGetStreamKpiMethod;
+    }
 
-  /**
-   */
-  public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
+    private static volatile io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetInstantKpiMethod;
 
-    /**
-     */
-    public void setKpi(monitoring.Monitoring.KpiDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "GetInstantKpi", requestType = monitoring.Monitoring.KpiId.class, responseType = monitoring.Monitoring.Kpi.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetInstantKpiMethod() {
+        io.grpc.MethodDescriptor<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi> getGetInstantKpiMethod;
+        if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
+            synchronized (MonitoringServiceGrpc.class) {
+                if ((getGetInstantKpiMethod = MonitoringServiceGrpc.getGetInstantKpiMethod) == null) {
+                    MonitoringServiceGrpc.getGetInstantKpiMethod = getGetInstantKpiMethod = io.grpc.MethodDescriptor.<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "GetInstantKpi")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.KpiId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(monitoring.Monitoring.Kpi.getDefaultInstance())).setSchemaDescriptor(new MonitoringServiceMethodDescriptorSupplier("GetInstantKpi")).build();
+                }
+            }
+        }
+        return getGetInstantKpiMethod;
     }
 
     /**
+     * Creates a new async stub that supports all call types for the service
      */
-    public void deleteKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
-    }
+    public static MonitoringServiceStub newStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceStub> factory = new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceStub>() {
 
-    /**
-     */
-    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
+            @java.lang.Override
+            public MonitoringServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new MonitoringServiceStub(channel, callOptions);
+            }
+        };
+        return MonitoringServiceStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new blocking-style stub that supports unary and streaming output calls on the service
      */
-    public void getKpiDescriptorList(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
-    }
+    public static MonitoringServiceBlockingStub newBlockingStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceBlockingStub> factory = new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceBlockingStub>() {
 
-    /**
-     */
-    public void includeKpi(monitoring.Monitoring.Kpi request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
+            @java.lang.Override
+            public MonitoringServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new MonitoringServiceBlockingStub(channel, callOptions);
+            }
+        };
+        return MonitoringServiceBlockingStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new ListenableFuture-style stub that supports unary calls on the service
      */
-    public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
-    }
+    public static MonitoringServiceFutureStub newFutureStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceFutureStub> factory = new io.grpc.stub.AbstractStub.StubFactory<MonitoringServiceFutureStub>() {
 
-    /**
-     */
-    public void queryKpiData(monitoring.Monitoring.KpiQuery request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
+            @java.lang.Override
+            public MonitoringServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new MonitoringServiceFutureStub(channel, callOptions);
+            }
+        };
+        return MonitoringServiceFutureStub.newStub(factory, channel);
     }
 
     /**
      */
-    public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
-    }
+    public interface AsyncService {
 
-    /**
-     */
-    public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
-    }
+        /**
+         */
+        default void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getSubscriptions(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteKpiMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void deleteSubscription(monitoring.Monitoring.SubscriptionID request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetKpiDescriptorListMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarms(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
-    }
+        /**
+         */
+        default void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getIncludeKpiMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
-    }
+        /**
+         */
+        default void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getMonitorKpiMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
-    }
+        /**
+         */
+        default void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getQueryKpiDataMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void deleteAlarm(monitoring.Monitoring.AlarmID request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
-    }
+        /**
+         */
+        default void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiSubscriptionMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getStreamKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubsDescriptorMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getInstantKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
-    }
+        /**
+         */
+        default void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetSubscriptionsMethod(), responseObserver);
+        }
 
-    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            getSetKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiDescriptor,
-                monitoring.Monitoring.KpiId>(
-                  this, METHODID_SET_KPI)))
-          .addMethod(
-            getDeleteKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiId,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_DELETE_KPI)))
-          .addMethod(
-            getGetKpiDescriptorMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiId,
-                monitoring.Monitoring.KpiDescriptor>(
-                  this, METHODID_GET_KPI_DESCRIPTOR)))
-          .addMethod(
-            getGetKpiDescriptorListMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                monitoring.Monitoring.KpiDescriptorList>(
-                  this, METHODID_GET_KPI_DESCRIPTOR_LIST)))
-          .addMethod(
-            getIncludeKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.Kpi,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_INCLUDE_KPI)))
-          .addMethod(
-            getMonitorKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.MonitorKpiRequest,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_MONITOR_KPI)))
-          .addMethod(
-            getQueryKpiDataMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiQuery,
-                monitoring.Monitoring.RawKpiTable>(
-                  this, METHODID_QUERY_KPI_DATA)))
-          .addMethod(
-            getSetKpiSubscriptionMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                monitoring.Monitoring.SubsDescriptor,
-                monitoring.Monitoring.SubsResponse>(
-                  this, METHODID_SET_KPI_SUBSCRIPTION)))
-          .addMethod(
-            getGetSubsDescriptorMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.SubscriptionID,
-                monitoring.Monitoring.SubsDescriptor>(
-                  this, METHODID_GET_SUBS_DESCRIPTOR)))
-          .addMethod(
-            getGetSubscriptionsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                monitoring.Monitoring.SubsList>(
-                  this, METHODID_GET_SUBSCRIPTIONS)))
-          .addMethod(
-            getDeleteSubscriptionMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.SubscriptionID,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_DELETE_SUBSCRIPTION)))
-          .addMethod(
-            getSetKpiAlarmMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.AlarmDescriptor,
-                monitoring.Monitoring.AlarmID>(
-                  this, METHODID_SET_KPI_ALARM)))
-          .addMethod(
-            getGetAlarmsMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                monitoring.Monitoring.AlarmList>(
-                  this, METHODID_GET_ALARMS)))
-          .addMethod(
-            getGetAlarmDescriptorMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.AlarmID,
-                monitoring.Monitoring.AlarmDescriptor>(
-                  this, METHODID_GET_ALARM_DESCRIPTOR)))
-          .addMethod(
-            getGetAlarmResponseStreamMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                monitoring.Monitoring.AlarmSubscription,
-                monitoring.Monitoring.AlarmResponse>(
-                  this, METHODID_GET_ALARM_RESPONSE_STREAM)))
-          .addMethod(
-            getDeleteAlarmMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.AlarmID,
-                context.ContextOuterClass.Empty>(
-                  this, METHODID_DELETE_ALARM)))
-          .addMethod(
-            getGetStreamKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncServerStreamingCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiId,
-                monitoring.Monitoring.Kpi>(
-                  this, METHODID_GET_STREAM_KPI)))
-          .addMethod(
-            getGetInstantKpiMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                monitoring.Monitoring.KpiId,
-                monitoring.Monitoring.Kpi>(
-                  this, METHODID_GET_INSTANT_KPI)))
-          .build();
-    }
-  }
-
-  /**
-   */
-  public static final class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub<MonitoringServiceStub> {
-    private MonitoringServiceStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        default void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteSubscriptionMethod(), responseObserver);
+        }
 
-    @java.lang.Override
-    protected MonitoringServiceStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new MonitoringServiceStub(channel, callOptions);
-    }
+        /**
+         */
+        default void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSetKpiAlarmMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void setKpi(monitoring.Monitoring.KpiDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetKpiMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmsMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void deleteKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmDescriptorMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getKpiDescriptor(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetAlarmResponseStreamMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void getKpiDescriptorList(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getDeleteAlarmMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void includeKpi(monitoring.Monitoring.Kpi request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getIncludeKpiMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetStreamKpiMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getMonitorKpiMethod(), getCallOptions()), request, responseObserver);
+        /**
+         */
+        default void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetInstantKpiMethod(), responseObserver);
+        }
     }
 
     /**
+     * Base class for the server implementation of the service MonitoringService.
      */
-    public void queryKpiData(monitoring.Monitoring.KpiQuery request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request, responseObserver);
-    }
+    public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService, AsyncService {
 
-    /**
-     */
-    public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getSetKpiSubscriptionMethod(), getCallOptions()), request, responseObserver);
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return MonitoringServiceGrpc.bindService(this);
+        }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service MonitoringService.
      */
-    public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetSubsDescriptorMethod(), getCallOptions()), request, responseObserver);
-    }
+    public static class MonitoringServiceStub extends io.grpc.stub.AbstractAsyncStub<MonitoringServiceStub> {
 
-    /**
-     */
-    public void getSubscriptions(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request, responseObserver);
-    }
+        private MonitoringServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public void deleteSubscription(monitoring.Monitoring.SubscriptionID request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request, responseObserver);
-    }
+        @java.lang.Override
+        protected MonitoringServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new MonitoringServiceStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void setKpi(monitoring.Monitoring.KpiDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetKpiMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarms(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void deleteKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetAlarmDescriptorMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getKpiDescriptor(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetAlarmResponseStreamMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void getKpiDescriptorList(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void deleteAlarm(monitoring.Monitoring.AlarmID request,
-        io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void includeKpi(monitoring.Monitoring.Kpi request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getIncludeKpiMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getStreamKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncServerStreamingCall(
-          getChannel().newCall(getGetStreamKpiMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        public void monitorKpi(monitoring.Monitoring.MonitorKpiRequest request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getMonitorKpiMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public void getInstantKpi(monitoring.Monitoring.KpiId request,
-        io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   */
-  public static final class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<MonitoringServiceBlockingStub> {
-    private MonitoringServiceBlockingStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        public void queryKpiData(monitoring.Monitoring.KpiQuery request, io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    @java.lang.Override
-    protected MonitoringServiceBlockingStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new MonitoringServiceBlockingStub(channel, callOptions);
-    }
+        /**
+         */
+        public void setKpiSubscription(monitoring.Monitoring.SubsDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getSetKpiSubscriptionMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.KpiId setKpi(monitoring.Monitoring.KpiDescriptor request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetKpiMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getSubsDescriptor(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetSubsDescriptorMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty deleteKpi(monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getDeleteKpiMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getSubscriptions(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.KpiDescriptor getKpiDescriptor(monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetKpiDescriptorMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void deleteSubscription(monitoring.Monitoring.SubscriptionID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.KpiDescriptorList getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetKpiDescriptorListMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty includeKpi(monitoring.Monitoring.Kpi request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getIncludeKpiMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getAlarms(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getMonitorKpiMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getAlarmDescriptor(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetAlarmDescriptorMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.RawKpiTable queryKpiData(monitoring.Monitoring.KpiQuery request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getQueryKpiDataMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request, io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetAlarmResponseStreamMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public java.util.Iterator<monitoring.Monitoring.SubsResponse> setKpiSubscription(
-        monitoring.Monitoring.SubsDescriptor request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getSetKpiSubscriptionMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void deleteAlarm(monitoring.Monitoring.AlarmID request, io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetSubsDescriptorMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void getStreamKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncServerStreamingCall(getChannel().newCall(getGetStreamKpiMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.SubsList getSubscriptions(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetSubscriptionsMethod(), getCallOptions(), request);
+        /**
+         */
+        public void getInstantKpi(monitoring.Monitoring.KpiId request, io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service MonitoringService.
      */
-    public context.ContextOuterClass.Empty deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getDeleteSubscriptionMethod(), getCallOptions(), request);
-    }
+    public static class MonitoringServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<MonitoringServiceBlockingStub> {
 
-    /**
-     */
-    public monitoring.Monitoring.AlarmID setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getSetKpiAlarmMethod(), getCallOptions(), request);
-    }
+        private MonitoringServiceBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.AlarmList getAlarms(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetAlarmsMethod(), getCallOptions(), request);
-    }
+        @java.lang.Override
+        protected MonitoringServiceBlockingStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new MonitoringServiceBlockingStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetAlarmDescriptorMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.KpiId setKpi(monitoring.Monitoring.KpiDescriptor request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetKpiMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public java.util.Iterator<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(
-        monitoring.Monitoring.AlarmSubscription request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetAlarmResponseStreamMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public context.ContextOuterClass.Empty deleteKpi(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteKpiMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public context.ContextOuterClass.Empty deleteAlarm(monitoring.Monitoring.AlarmID request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getDeleteAlarmMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.KpiDescriptor getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetKpiDescriptorMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public java.util.Iterator<monitoring.Monitoring.Kpi> getStreamKpi(
-        monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.blockingServerStreamingCall(
-          getChannel(), getGetStreamKpiMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.KpiDescriptorList getKpiDescriptorList(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetKpiDescriptorListMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public monitoring.Monitoring.Kpi getInstantKpi(monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getGetInstantKpiMethod(), getCallOptions(), request);
-    }
-  }
-
-  /**
-   */
-  public static final class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub<MonitoringServiceFutureStub> {
-    private MonitoringServiceFutureStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        public context.ContextOuterClass.Empty includeKpi(monitoring.Monitoring.Kpi request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getIncludeKpiMethod(), getCallOptions(), request);
+        }
 
-    @java.lang.Override
-    protected MonitoringServiceFutureStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new MonitoringServiceFutureStub(channel, callOptions);
-    }
+        /**
+         */
+        public context.ContextOuterClass.Empty monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getMonitorKpiMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiId> setKpi(
-        monitoring.Monitoring.KpiDescriptor request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetKpiMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.RawKpiTable queryKpiData(monitoring.Monitoring.KpiQuery request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getQueryKpiDataMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteKpi(
-        monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public java.util.Iterator<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getSetKpiSubscriptionMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(
-        monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.SubsDescriptor getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetSubsDescriptorMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.SubsList getSubscriptions(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetSubscriptionsMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> includeKpi(
-        monitoring.Monitoring.Kpi request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getIncludeKpiMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public context.ContextOuterClass.Empty deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteSubscriptionMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> monitorKpi(
-        monitoring.Monitoring.MonitorKpiRequest request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getMonitorKpiMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.AlarmID setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getSetKpiAlarmMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.RawKpiTable> queryKpiData(
-        monitoring.Monitoring.KpiQuery request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.AlarmList getAlarms(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetAlarmsMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(
-        monitoring.Monitoring.SubscriptionID request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetSubsDescriptorMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public monitoring.Monitoring.AlarmDescriptor getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetAlarmDescriptorMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.SubsList> getSubscriptions(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public java.util.Iterator<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetAlarmResponseStreamMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteSubscription(
-        monitoring.Monitoring.SubscriptionID request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public context.ContextOuterClass.Empty deleteAlarm(monitoring.Monitoring.AlarmID request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getDeleteAlarmMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmID> setKpiAlarm(
-        monitoring.Monitoring.AlarmDescriptor request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public java.util.Iterator<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.blockingServerStreamingCall(getChannel(), getGetStreamKpiMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmList> getAlarms(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request);
+        /**
+         */
+        public monitoring.Monitoring.Kpi getInstantKpi(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getGetInstantKpiMethod(), getCallOptions(), request);
+        }
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service MonitoringService.
      */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(
-        monitoring.Monitoring.AlarmID request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetAlarmDescriptorMethod(), getCallOptions()), request);
-    }
+    public static class MonitoringServiceFutureStub extends io.grpc.stub.AbstractFutureStub<MonitoringServiceFutureStub> {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteAlarm(
-        monitoring.Monitoring.AlarmID request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request);
-    }
+        private MonitoringServiceFutureStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.Kpi> getInstantKpi(
-        monitoring.Monitoring.KpiId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_SET_KPI = 0;
-  private static final int METHODID_DELETE_KPI = 1;
-  private static final int METHODID_GET_KPI_DESCRIPTOR = 2;
-  private static final int METHODID_GET_KPI_DESCRIPTOR_LIST = 3;
-  private static final int METHODID_INCLUDE_KPI = 4;
-  private static final int METHODID_MONITOR_KPI = 5;
-  private static final int METHODID_QUERY_KPI_DATA = 6;
-  private static final int METHODID_SET_KPI_SUBSCRIPTION = 7;
-  private static final int METHODID_GET_SUBS_DESCRIPTOR = 8;
-  private static final int METHODID_GET_SUBSCRIPTIONS = 9;
-  private static final int METHODID_DELETE_SUBSCRIPTION = 10;
-  private static final int METHODID_SET_KPI_ALARM = 11;
-  private static final int METHODID_GET_ALARMS = 12;
-  private static final int METHODID_GET_ALARM_DESCRIPTOR = 13;
-  private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 14;
-  private static final int METHODID_DELETE_ALARM = 15;
-  private static final int METHODID_GET_STREAM_KPI = 16;
-  private static final int METHODID_GET_INSTANT_KPI = 17;
-
-  private static final class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final MonitoringServiceImplBase serviceImpl;
-    private final int methodId;
-
-    MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
+        @java.lang.Override
+        protected MonitoringServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new MonitoringServiceFutureStub(channel, callOptions);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetKpiMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteKpiMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetKpiDescriptorMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetKpiDescriptorListMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getIncludeKpiMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getMonitorKpiMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getQueryKpiDataMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetSubsDescriptorMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetSubscriptionsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteSubscriptionMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getSetKpiAlarmMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetAlarmsMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetAlarmDescriptorMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getDeleteAlarmMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getGetInstantKpiMethod(), getCallOptions()), request);
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_SET_KPI:
-          serviceImpl.setKpi((monitoring.Monitoring.KpiDescriptor) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver);
-          break;
-        case METHODID_DELETE_KPI:
-          serviceImpl.deleteKpi((monitoring.Monitoring.KpiId) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_KPI_DESCRIPTOR:
-          serviceImpl.getKpiDescriptor((monitoring.Monitoring.KpiId) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver);
-          break;
-        case METHODID_GET_KPI_DESCRIPTOR_LIST:
-          serviceImpl.getKpiDescriptorList((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver);
-          break;
-        case METHODID_INCLUDE_KPI:
-          serviceImpl.includeKpi((monitoring.Monitoring.Kpi) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_MONITOR_KPI:
-          serviceImpl.monitorKpi((monitoring.Monitoring.MonitorKpiRequest) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_QUERY_KPI_DATA:
-          serviceImpl.queryKpiData((monitoring.Monitoring.KpiQuery) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver);
-          break;
-        case METHODID_SET_KPI_SUBSCRIPTION:
-          serviceImpl.setKpiSubscription((monitoring.Monitoring.SubsDescriptor) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse>) responseObserver);
-          break;
-        case METHODID_GET_SUBS_DESCRIPTOR:
-          serviceImpl.getSubsDescriptor((monitoring.Monitoring.SubscriptionID) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor>) responseObserver);
-          break;
-        case METHODID_GET_SUBSCRIPTIONS:
-          serviceImpl.getSubscriptions((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList>) responseObserver);
-          break;
-        case METHODID_DELETE_SUBSCRIPTION:
-          serviceImpl.deleteSubscription((monitoring.Monitoring.SubscriptionID) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_SET_KPI_ALARM:
-          serviceImpl.setKpiAlarm((monitoring.Monitoring.AlarmDescriptor) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver);
-          break;
-        case METHODID_GET_ALARMS:
-          serviceImpl.getAlarms((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList>) responseObserver);
-          break;
-        case METHODID_GET_ALARM_DESCRIPTOR:
-          serviceImpl.getAlarmDescriptor((monitoring.Monitoring.AlarmID) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor>) responseObserver);
-          break;
-        case METHODID_GET_ALARM_RESPONSE_STREAM:
-          serviceImpl.getAlarmResponseStream((monitoring.Monitoring.AlarmSubscription) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver);
-          break;
-        case METHODID_DELETE_ALARM:
-          serviceImpl.deleteAlarm((monitoring.Monitoring.AlarmID) request,
-              (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
-          break;
-        case METHODID_GET_STREAM_KPI:
-          serviceImpl.getStreamKpi((monitoring.Monitoring.KpiId) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver);
-          break;
-        case METHODID_GET_INSTANT_KPI:
-          serviceImpl.getInstantKpi((monitoring.Monitoring.KpiId) request,
-              (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
+    private static final int METHODID_SET_KPI = 0;
+
+    private static final int METHODID_DELETE_KPI = 1;
+
+    private static final int METHODID_GET_KPI_DESCRIPTOR = 2;
+
+    private static final int METHODID_GET_KPI_DESCRIPTOR_LIST = 3;
+
+    private static final int METHODID_INCLUDE_KPI = 4;
+
+    private static final int METHODID_MONITOR_KPI = 5;
+
+    private static final int METHODID_QUERY_KPI_DATA = 6;
+
+    private static final int METHODID_SET_KPI_SUBSCRIPTION = 7;
+
+    private static final int METHODID_GET_SUBS_DESCRIPTOR = 8;
+
+    private static final int METHODID_GET_SUBSCRIPTIONS = 9;
+
+    private static final int METHODID_DELETE_SUBSCRIPTION = 10;
+
+    private static final int METHODID_SET_KPI_ALARM = 11;
+
+    private static final int METHODID_GET_ALARMS = 12;
+
+    private static final int METHODID_GET_ALARM_DESCRIPTOR = 13;
+
+    private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 14;
+
+    private static final int METHODID_DELETE_ALARM = 15;
+
+    private static final int METHODID_GET_STREAM_KPI = 16;
+
+    private static final int METHODID_GET_INSTANT_KPI = 17;
+
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
+        private final AsyncService serviceImpl;
+
+        private final int methodId;
+
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                case METHODID_SET_KPI:
+                    serviceImpl.setKpi((monitoring.Monitoring.KpiDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver);
+                    break;
+                case METHODID_DELETE_KPI:
+                    serviceImpl.deleteKpi((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_KPI_DESCRIPTOR:
+                    serviceImpl.getKpiDescriptor((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver);
+                    break;
+                case METHODID_GET_KPI_DESCRIPTOR_LIST:
+                    serviceImpl.getKpiDescriptorList((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver);
+                    break;
+                case METHODID_INCLUDE_KPI:
+                    serviceImpl.includeKpi((monitoring.Monitoring.Kpi) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_MONITOR_KPI:
+                    serviceImpl.monitorKpi((monitoring.Monitoring.MonitorKpiRequest) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_QUERY_KPI_DATA:
+                    serviceImpl.queryKpiData((monitoring.Monitoring.KpiQuery) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver);
+                    break;
+                case METHODID_SET_KPI_SUBSCRIPTION:
+                    serviceImpl.setKpiSubscription((monitoring.Monitoring.SubsDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse>) responseObserver);
+                    break;
+                case METHODID_GET_SUBS_DESCRIPTOR:
+                    serviceImpl.getSubsDescriptor((monitoring.Monitoring.SubscriptionID) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor>) responseObserver);
+                    break;
+                case METHODID_GET_SUBSCRIPTIONS:
+                    serviceImpl.getSubscriptions((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList>) responseObserver);
+                    break;
+                case METHODID_DELETE_SUBSCRIPTION:
+                    serviceImpl.deleteSubscription((monitoring.Monitoring.SubscriptionID) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_SET_KPI_ALARM:
+                    serviceImpl.setKpiAlarm((monitoring.Monitoring.AlarmDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver);
+                    break;
+                case METHODID_GET_ALARMS:
+                    serviceImpl.getAlarms((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList>) responseObserver);
+                    break;
+                case METHODID_GET_ALARM_DESCRIPTOR:
+                    serviceImpl.getAlarmDescriptor((monitoring.Monitoring.AlarmID) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor>) responseObserver);
+                    break;
+                case METHODID_GET_ALARM_RESPONSE_STREAM:
+                    serviceImpl.getAlarmResponseStream((monitoring.Monitoring.AlarmSubscription) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver);
+                    break;
+                case METHODID_DELETE_ALARM:
+                    serviceImpl.deleteAlarm((monitoring.Monitoring.AlarmID) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver);
+                    break;
+                case METHODID_GET_STREAM_KPI:
+                    serviceImpl.getStreamKpi((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver);
+                    break;
+                case METHODID_GET_INSTANT_KPI:
+                    serviceImpl.getInstantKpi((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver);
+                    break;
+                default:
+                    throw new AssertionError();
+            }
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                default:
+                    throw new AssertionError();
+            }
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getSetKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(service, METHODID_SET_KPI))).addMethod(getDeleteKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(service, METHODID_DELETE_KPI))).addMethod(getGetKpiDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(service, METHODID_GET_KPI_DESCRIPTOR))).addMethod(getGetKpiDescriptorListMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(service, METHODID_GET_KPI_DESCRIPTOR_LIST))).addMethod(getIncludeKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(service, METHODID_INCLUDE_KPI))).addMethod(getMonitorKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(service, METHODID_MONITOR_KPI))).addMethod(getQueryKpiDataMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(service, METHODID_QUERY_KPI_DATA))).addMethod(getSetKpiSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(service, METHODID_SET_KPI_SUBSCRIPTION))).addMethod(getGetSubsDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(service, METHODID_GET_SUBS_DESCRIPTOR))).addMethod(getGetSubscriptionsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(service, METHODID_GET_SUBSCRIPTIONS))).addMethod(getDeleteSubscriptionMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_SUBSCRIPTION))).addMethod(getSetKpiAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(service, METHODID_SET_KPI_ALARM))).addMethod(getGetAlarmsMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(service, METHODID_GET_ALARMS))).addMethod(getGetAlarmDescriptorMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(service, METHODID_GET_ALARM_DESCRIPTOR))).addMethod(getGetAlarmResponseStreamMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(service, METHODID_GET_ALARM_RESPONSE_STREAM))).addMethod(getDeleteAlarmMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(service, METHODID_DELETE_ALARM))).addMethod(getGetStreamKpiMethod(), io.grpc.stub.ServerCalls.asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_STREAM_KPI))).addMethod(getGetInstantKpiMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(service, METHODID_GET_INSTANT_KPI))).build();
     }
-  }
 
-  private static abstract class MonitoringServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
-    MonitoringServiceBaseDescriptorSupplier() {}
+    private static abstract class MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+
+        MonitoringServiceBaseDescriptorSupplier() {
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+            return monitoring.Monitoring.getDescriptor();
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
-      return monitoring.Monitoring.getDescriptor();
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+            return getFileDescriptor().findServiceByName("MonitoringService");
+        }
     }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
-      return getFileDescriptor().findServiceByName("MonitoringService");
+    private static final class MonitoringServiceFileDescriptorSupplier extends MonitoringServiceBaseDescriptorSupplier {
+
+        MonitoringServiceFileDescriptorSupplier() {
+        }
     }
-  }
 
-  private static final class MonitoringServiceFileDescriptorSupplier
-      extends MonitoringServiceBaseDescriptorSupplier {
-    MonitoringServiceFileDescriptorSupplier() {}
-  }
+    private static final class MonitoringServiceMethodDescriptorSupplier extends MonitoringServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
 
-  private static final class MonitoringServiceMethodDescriptorSupplier
-      extends MonitoringServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
-    private final String methodName;
+        private final String methodName;
 
-    MonitoringServiceMethodDescriptorSupplier(String methodName) {
-      this.methodName = methodName;
-    }
+        MonitoringServiceMethodDescriptorSupplier(String methodName) {
+            this.methodName = methodName;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
-      return getServiceDescriptor().findMethodByName(methodName);
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+            return getServiceDescriptor().findMethodByName(methodName);
+        }
     }
-  }
 
-  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+    private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
 
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    io.grpc.ServiceDescriptor result = serviceDescriptor;
-    if (result == null) {
-      synchronized (MonitoringServiceGrpc.class) {
-        result = serviceDescriptor;
+    public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+        io.grpc.ServiceDescriptor result = serviceDescriptor;
         if (result == null) {
-          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
-              .setSchemaDescriptor(new MonitoringServiceFileDescriptorSupplier())
-              .addMethod(getSetKpiMethod())
-              .addMethod(getDeleteKpiMethod())
-              .addMethod(getGetKpiDescriptorMethod())
-              .addMethod(getGetKpiDescriptorListMethod())
-              .addMethod(getIncludeKpiMethod())
-              .addMethod(getMonitorKpiMethod())
-              .addMethod(getQueryKpiDataMethod())
-              .addMethod(getSetKpiSubscriptionMethod())
-              .addMethod(getGetSubsDescriptorMethod())
-              .addMethod(getGetSubscriptionsMethod())
-              .addMethod(getDeleteSubscriptionMethod())
-              .addMethod(getSetKpiAlarmMethod())
-              .addMethod(getGetAlarmsMethod())
-              .addMethod(getGetAlarmDescriptorMethod())
-              .addMethod(getGetAlarmResponseStreamMethod())
-              .addMethod(getDeleteAlarmMethod())
-              .addMethod(getGetStreamKpiMethod())
-              .addMethod(getGetInstantKpiMethod())
-              .build();
-        }
-      }
+            synchronized (MonitoringServiceGrpc.class) {
+                result = serviceDescriptor;
+                if (result == null) {
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new MonitoringServiceFileDescriptorSupplier()).addMethod(getSetKpiMethod()).addMethod(getDeleteKpiMethod()).addMethod(getGetKpiDescriptorMethod()).addMethod(getGetKpiDescriptorListMethod()).addMethod(getIncludeKpiMethod()).addMethod(getMonitorKpiMethod()).addMethod(getQueryKpiDataMethod()).addMethod(getSetKpiSubscriptionMethod()).addMethod(getGetSubsDescriptorMethod()).addMethod(getGetSubscriptionsMethod()).addMethod(getDeleteSubscriptionMethod()).addMethod(getSetKpiAlarmMethod()).addMethod(getGetAlarmsMethod()).addMethod(getGetAlarmDescriptorMethod()).addMethod(getGetAlarmResponseStreamMethod()).addMethod(getDeleteAlarmMethod()).addMethod(getGetStreamKpiMethod()).addMethod(getGetInstantKpiMethod()).build();
+                }
+            }
+        }
+        return result;
     }
-    return result;
-  }
 }
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
index f045ecc7ed434ba90bdfda065f18e0d839850a76..b4aaeb338610eee182a8132056f00ea99e180891 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
@@ -6,18 +6,18 @@ import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: monitoring.proto")
-public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
-    private MutinyMonitoringServiceGrpc() {}
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: monitoring.proto")
+public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.MutinyGrpc {
+
+    private MutinyMonitoringServiceGrpc() {
+    }
 
     public static MutinyMonitoringServiceStub newMutinyStub(io.grpc.Channel channel) {
         return new MutinyMonitoringServiceStub(channel);
     }
 
-    
-    public static final class MutinyMonitoringServiceStub extends io.grpc.stub.AbstractStub<MutinyMonitoringServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
+    public static class MutinyMonitoringServiceStub extends io.grpc.stub.AbstractStub<MutinyMonitoringServiceStub> implements io.quarkus.grpc.MutinyStub {
+
         private MonitoringServiceGrpc.MonitoringServiceStub delegateStub;
 
         private MutinyMonitoringServiceStub(io.grpc.Channel channel) {
@@ -35,361 +35,213 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
             return new MutinyMonitoringServiceStub(channel, callOptions);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setKpi);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteKpi);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptor);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptor);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptorList);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getKpiDescriptorList);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::includeKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::includeKpi);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::monitorKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::monitorKpi);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::queryKpiData);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::queryKpiData);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getSubsDescriptor);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getSubsDescriptor);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getSubscriptions);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getSubscriptions);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteSubscription);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteSubscription);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::setKpiAlarm);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::setKpiAlarm);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getAlarms);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getAlarms);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getAlarmDescriptor);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getAlarmDescriptor);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::deleteAlarm);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::deleteAlarm);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::getInstantKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::getInstantKpi);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::setKpiSubscription);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::setKpiSubscription);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getAlarmResponseStream);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getAlarmResponseStream);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToMany(request, delegateStub::getStreamKpi);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToMany(request, delegateStub::getStreamKpi);
         }
-
     }
 
-    
     public static abstract class MonitoringServiceImplBase implements io.grpc.BindableService {
 
         private String compression;
+
         /**
-        * Set whether the server will try to use a compressed response.
-        *
-        * @param compression the compression, e.g {@code gzip}
-        */
+         * Set whether the server will try to use a compressed response.
+         *
+         * @param compression the compression, e.g {@code gzip}
+         */
         public MonitoringServiceImplBase withCompression(String compression) {
-        this.compression = compression;
-        return this;
+            this.compression = compression;
+            return this;
         }
 
-
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiId> setKpi(monitoring.Monitoring.KpiDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptor> getKpiDescriptor(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.KpiDescriptorList> getKpiDescriptorList(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> includeKpi(monitoring.Monitoring.Kpi request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> monitorKpi(monitoring.Monitoring.MonitorKpiRequest request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.RawKpiTable> queryKpiData(monitoring.Monitoring.KpiQuery request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsDescriptor> getSubsDescriptor(monitoring.Monitoring.SubscriptionID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.SubsList> getSubscriptions(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteSubscription(monitoring.Monitoring.SubscriptionID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmID> setKpiAlarm(monitoring.Monitoring.AlarmDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmList> getAlarms(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.AlarmDescriptor> getAlarmDescriptor(monitoring.Monitoring.AlarmID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<context.ContextOuterClass.Empty> deleteAlarm(monitoring.Monitoring.AlarmID request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<monitoring.Monitoring.Kpi> getInstantKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.SubsResponse> setKpiSubscription(monitoring.Monitoring.SubsDescriptor request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.AlarmResponse> getAlarmResponseStream(monitoring.Monitoring.AlarmSubscription request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Multi<monitoring.Monitoring.Kpi> getStreamKpi(monitoring.Monitoring.KpiId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getSetKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiDescriptor,
-                                            monitoring.Monitoring.KpiId>(
-                                            this, METHODID_SET_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getDeleteKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiId,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_DELETE_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetKpiDescriptorMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiId,
-                                            monitoring.Monitoring.KpiDescriptor>(
-                                            this, METHODID_GET_KPI_DESCRIPTOR, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetKpiDescriptorListMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            monitoring.Monitoring.KpiDescriptorList>(
-                                            this, METHODID_GET_KPI_DESCRIPTOR_LIST, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getIncludeKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.Kpi,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_INCLUDE_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getMonitorKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.MonitorKpiRequest,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_MONITOR_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getQueryKpiDataMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiQuery,
-                                            monitoring.Monitoring.RawKpiTable>(
-                                            this, METHODID_QUERY_KPI_DATA, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getSetKpiSubscriptionMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.SubsDescriptor,
-                                            monitoring.Monitoring.SubsResponse>(
-                                            this, METHODID_SET_KPI_SUBSCRIPTION, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetSubsDescriptorMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.SubscriptionID,
-                                            monitoring.Monitoring.SubsDescriptor>(
-                                            this, METHODID_GET_SUBS_DESCRIPTOR, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetSubscriptionsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            monitoring.Monitoring.SubsList>(
-                                            this, METHODID_GET_SUBSCRIPTIONS, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getDeleteSubscriptionMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.SubscriptionID,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_DELETE_SUBSCRIPTION, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getSetKpiAlarmMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.AlarmDescriptor,
-                                            monitoring.Monitoring.AlarmID>(
-                                            this, METHODID_SET_KPI_ALARM, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetAlarmsMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            monitoring.Monitoring.AlarmList>(
-                                            this, METHODID_GET_ALARMS, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetAlarmDescriptorMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.AlarmID,
-                                            monitoring.Monitoring.AlarmDescriptor>(
-                                            this, METHODID_GET_ALARM_DESCRIPTOR, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetAlarmResponseStreamMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.AlarmSubscription,
-                                            monitoring.Monitoring.AlarmResponse>(
-                                            this, METHODID_GET_ALARM_RESPONSE_STREAM, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getDeleteAlarmMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.AlarmID,
-                                            context.ContextOuterClass.Empty>(
-                                            this, METHODID_DELETE_ALARM, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetStreamKpiMethod(),
-                            asyncServerStreamingCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiId,
-                                            monitoring.Monitoring.Kpi>(
-                                            this, METHODID_GET_STREAM_KPI, compression)))
-                    .addMethod(
-                            monitoring.MonitoringServiceGrpc.getGetInstantKpiMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            monitoring.Monitoring.KpiId,
-                                            monitoring.Monitoring.Kpi>(
-                                            this, METHODID_GET_INSTANT_KPI, compression)))
-                    .build();
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(monitoring.MonitoringServiceGrpc.getSetKpiMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiDescriptor, monitoring.Monitoring.KpiId>(this, METHODID_SET_KPI, compression))).addMethod(monitoring.MonitoringServiceGrpc.getDeleteKpiMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, context.ContextOuterClass.Empty>(this, METHODID_DELETE_KPI, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetKpiDescriptorMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.KpiDescriptor>(this, METHODID_GET_KPI_DESCRIPTOR, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetKpiDescriptorListMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.KpiDescriptorList>(this, METHODID_GET_KPI_DESCRIPTOR_LIST, compression))).addMethod(monitoring.MonitoringServiceGrpc.getIncludeKpiMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.Kpi, context.ContextOuterClass.Empty>(this, METHODID_INCLUDE_KPI, compression))).addMethod(monitoring.MonitoringServiceGrpc.getMonitorKpiMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.MonitorKpiRequest, context.ContextOuterClass.Empty>(this, METHODID_MONITOR_KPI, compression))).addMethod(monitoring.MonitoringServiceGrpc.getQueryKpiDataMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiQuery, monitoring.Monitoring.RawKpiTable>(this, METHODID_QUERY_KPI_DATA, compression))).addMethod(monitoring.MonitoringServiceGrpc.getSetKpiSubscriptionMethod(), asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.SubsDescriptor, monitoring.Monitoring.SubsResponse>(this, METHODID_SET_KPI_SUBSCRIPTION, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetSubsDescriptorMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, monitoring.Monitoring.SubsDescriptor>(this, METHODID_GET_SUBS_DESCRIPTOR, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetSubscriptionsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.SubsList>(this, METHODID_GET_SUBSCRIPTIONS, compression))).addMethod(monitoring.MonitoringServiceGrpc.getDeleteSubscriptionMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.SubscriptionID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_SUBSCRIPTION, compression))).addMethod(monitoring.MonitoringServiceGrpc.getSetKpiAlarmMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmDescriptor, monitoring.Monitoring.AlarmID>(this, METHODID_SET_KPI_ALARM, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetAlarmsMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, monitoring.Monitoring.AlarmList>(this, METHODID_GET_ALARMS, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetAlarmDescriptorMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, monitoring.Monitoring.AlarmDescriptor>(this, METHODID_GET_ALARM_DESCRIPTOR, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetAlarmResponseStreamMethod(), asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.AlarmSubscription, monitoring.Monitoring.AlarmResponse>(this, METHODID_GET_ALARM_RESPONSE_STREAM, compression))).addMethod(monitoring.MonitoringServiceGrpc.getDeleteAlarmMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.AlarmID, context.ContextOuterClass.Empty>(this, METHODID_DELETE_ALARM, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetStreamKpiMethod(), asyncServerStreamingCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_STREAM_KPI, compression))).addMethod(monitoring.MonitoringServiceGrpc.getGetInstantKpiMethod(), asyncUnaryCall(new MethodHandlers<monitoring.Monitoring.KpiId, monitoring.Monitoring.Kpi>(this, METHODID_GET_INSTANT_KPI, compression))).build();
         }
     }
 
     private static final int METHODID_SET_KPI = 0;
+
     private static final int METHODID_DELETE_KPI = 1;
+
     private static final int METHODID_GET_KPI_DESCRIPTOR = 2;
+
     private static final int METHODID_GET_KPI_DESCRIPTOR_LIST = 3;
+
     private static final int METHODID_INCLUDE_KPI = 4;
+
     private static final int METHODID_MONITOR_KPI = 5;
+
     private static final int METHODID_QUERY_KPI_DATA = 6;
+
     private static final int METHODID_SET_KPI_SUBSCRIPTION = 7;
+
     private static final int METHODID_GET_SUBS_DESCRIPTOR = 8;
+
     private static final int METHODID_GET_SUBSCRIPTIONS = 9;
+
     private static final int METHODID_DELETE_SUBSCRIPTION = 10;
+
     private static final int METHODID_SET_KPI_ALARM = 11;
+
     private static final int METHODID_GET_ALARMS = 12;
+
     private static final int METHODID_GET_ALARM_DESCRIPTOR = 13;
+
     private static final int METHODID_GET_ALARM_RESPONSE_STREAM = 14;
+
     private static final int METHODID_DELETE_ALARM = 15;
+
     private static final int METHODID_GET_STREAM_KPI = 16;
+
     private static final int METHODID_GET_INSTANT_KPI = 17;
 
-    private static final class MethodHandlers<Req, Resp> implements
-            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
         private final MonitoringServiceImplBase serviceImpl;
+
         private final int methodId;
+
         private final String compression;
 
         MethodHandlers(MonitoringServiceImplBase serviceImpl, int methodId, String compression) {
@@ -401,114 +253,60 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 case METHODID_SET_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiDescriptor) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver,
-                            compression,
-                            serviceImpl::setKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.KpiDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiId>) responseObserver, compression, serviceImpl::setKpi);
                     break;
                 case METHODID_DELETE_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::deleteKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::deleteKpi);
                     break;
                 case METHODID_GET_KPI_DESCRIPTOR:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver,
-                            compression,
-                            serviceImpl::getKpiDescriptor);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptor>) responseObserver, compression, serviceImpl::getKpiDescriptor);
                     break;
                 case METHODID_GET_KPI_DESCRIPTOR_LIST:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver,
-                            compression,
-                            serviceImpl::getKpiDescriptorList);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.KpiDescriptorList>) responseObserver, compression, serviceImpl::getKpiDescriptorList);
                     break;
                 case METHODID_INCLUDE_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.Kpi) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::includeKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.Kpi) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::includeKpi);
                     break;
                 case METHODID_MONITOR_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.MonitorKpiRequest) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::monitorKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.MonitorKpiRequest) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::monitorKpi);
                     break;
                 case METHODID_QUERY_KPI_DATA:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiQuery) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver,
-                            compression,
-                            serviceImpl::queryKpiData);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.KpiQuery) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.RawKpiTable>) responseObserver, compression, serviceImpl::queryKpiData);
                     break;
                 case METHODID_SET_KPI_SUBSCRIPTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.SubsDescriptor) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse>) responseObserver,
-                            compression,
-                            serviceImpl::setKpiSubscription);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((monitoring.Monitoring.SubsDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsResponse>) responseObserver, compression, serviceImpl::setKpiSubscription);
                     break;
                 case METHODID_GET_SUBS_DESCRIPTOR:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor>) responseObserver,
-                            compression,
-                            serviceImpl::getSubsDescriptor);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsDescriptor>) responseObserver, compression, serviceImpl::getSubsDescriptor);
                     break;
                 case METHODID_GET_SUBSCRIPTIONS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList>) responseObserver,
-                            compression,
-                            serviceImpl::getSubscriptions);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.SubsList>) responseObserver, compression, serviceImpl::getSubscriptions);
                     break;
                 case METHODID_DELETE_SUBSCRIPTION:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::deleteSubscription);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.SubscriptionID) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::deleteSubscription);
                     break;
                 case METHODID_SET_KPI_ALARM:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmDescriptor) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver,
-                            compression,
-                            serviceImpl::setKpiAlarm);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.AlarmDescriptor) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmID>) responseObserver, compression, serviceImpl::setKpiAlarm);
                     break;
                 case METHODID_GET_ALARMS:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList>) responseObserver,
-                            compression,
-                            serviceImpl::getAlarms);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmList>) responseObserver, compression, serviceImpl::getAlarms);
                     break;
                 case METHODID_GET_ALARM_DESCRIPTOR:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmID) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor>) responseObserver,
-                            compression,
-                            serviceImpl::getAlarmDescriptor);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.AlarmID) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmDescriptor>) responseObserver, compression, serviceImpl::getAlarmDescriptor);
                     break;
                 case METHODID_GET_ALARM_RESPONSE_STREAM:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.AlarmSubscription) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver,
-                            compression,
-                            serviceImpl::getAlarmResponseStream);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((monitoring.Monitoring.AlarmSubscription) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.AlarmResponse>) responseObserver, compression, serviceImpl::getAlarmResponseStream);
                     break;
                 case METHODID_DELETE_ALARM:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.AlarmID) request,
-                            (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver,
-                            compression,
-                            serviceImpl::deleteAlarm);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.AlarmID) request, (io.grpc.stub.StreamObserver<context.ContextOuterClass.Empty>) responseObserver, compression, serviceImpl::deleteAlarm);
                     break;
                 case METHODID_GET_STREAM_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToMany((monitoring.Monitoring.KpiId) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver,
-                            compression,
-                            serviceImpl::getStreamKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToMany((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver, compression, serviceImpl::getStreamKpi);
                     break;
                 case METHODID_GET_INSTANT_KPI:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request,
-                            (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver,
-                            compression,
-                            serviceImpl::getInstantKpi);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((monitoring.Monitoring.KpiId) request, (io.grpc.stub.StreamObserver<monitoring.Monitoring.Kpi>) responseObserver, compression, serviceImpl::getInstantKpi);
                     break;
                 default:
                     throw new java.lang.AssertionError();
@@ -518,11 +316,10 @@ public final class MutinyMonitoringServiceGrpc implements io.quarkus.grpc.runtim
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 default:
                     throw new java.lang.AssertionError();
             }
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
index d46fdffb7b88f34ad648053139920d23dc2ab9d1..e048450a193d5275f81ce0c9f69e3289308fc42c 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
@@ -6,18 +6,18 @@ import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: ztp.proto")
-public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
-    private MutinyZtpServiceGrpc() {}
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: ztp.proto")
+public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.MutinyGrpc {
+
+    private MutinyZtpServiceGrpc() {
+    }
 
     public static MutinyZtpServiceStub newMutinyStub(io.grpc.Channel channel) {
         return new MutinyZtpServiceStub(channel);
     }
 
-    
-    public static final class MutinyZtpServiceStub extends io.grpc.stub.AbstractStub<MutinyZtpServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
+    public static class MutinyZtpServiceStub extends io.grpc.stub.AbstractStub<MutinyZtpServiceStub> implements io.quarkus.grpc.MutinyStub {
+
         private ZtpServiceGrpc.ZtpServiceStub delegateStub;
 
         private MutinyZtpServiceStub(io.grpc.Channel channel) {
@@ -35,145 +35,93 @@ public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.runtime.Mutin
             return new MutinyZtpServiceStub(channel, callOptions);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRole);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRole);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRolesByDeviceId);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRolesByDeviceId);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpAdd);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpAdd);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpUpdate);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpUpdate);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpDelete);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpDelete);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
-            return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpDeleteAll);
+            return io.quarkus.grpc.stubs.ClientCalls.oneToOne(request, delegateStub::ztpDeleteAll);
         }
-
     }
 
-    
     public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
 
         private String compression;
+
         /**
-        * Set whether the server will try to use a compressed response.
-        *
-        * @param compression the compression, e.g {@code gzip}
-        */
+         * Set whether the server will try to use a compressed response.
+         *
+         * @param compression the compression, e.g {@code gzip}
+         */
         public ZtpServiceImplBase withCompression(String compression) {
-        this.compression = compression;
-        return this;
+            this.compression = compression;
+            return this;
         }
 
-
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        
         public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
-        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpGetDeviceRoleMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            ztp.Ztp.DeviceRoleId,
-                                            ztp.Ztp.DeviceRole>(
-                                            this, METHODID_ZTP_GET_DEVICE_ROLE, compression)))
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.DeviceId,
-                                            ztp.Ztp.DeviceRoleList>(
-                                            this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID, compression)))
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpAddMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            ztp.Ztp.DeviceRole,
-                                            ztp.Ztp.DeviceRoleState>(
-                                            this, METHODID_ZTP_ADD, compression)))
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpUpdateMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            ztp.Ztp.DeviceRoleConfig,
-                                            ztp.Ztp.DeviceRoleState>(
-                                            this, METHODID_ZTP_UPDATE, compression)))
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpDeleteMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            ztp.Ztp.DeviceRole,
-                                            ztp.Ztp.DeviceRoleState>(
-                                            this, METHODID_ZTP_DELETE, compression)))
-                    .addMethod(
-                            ztp.ZtpServiceGrpc.getZtpDeleteAllMethod(),
-                            asyncUnaryCall(
-                                    new MethodHandlers<
-                                            context.ContextOuterClass.Empty,
-                                            ztp.Ztp.DeviceDeletionResult>(
-                                            this, METHODID_ZTP_DELETE_ALL, compression)))
-                    .build();
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(ztp.ZtpServiceGrpc.getZtpGetDeviceRoleMethod(), asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>(this, METHODID_ZTP_GET_DEVICE_ROLE, compression))).addMethod(ztp.ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>(this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID, compression))).addMethod(ztp.ZtpServiceGrpc.getZtpAddMethod(), asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_ADD, compression))).addMethod(ztp.ZtpServiceGrpc.getZtpUpdateMethod(), asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_UPDATE, compression))).addMethod(ztp.ZtpServiceGrpc.getZtpDeleteMethod(), asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(this, METHODID_ZTP_DELETE, compression))).addMethod(ztp.ZtpServiceGrpc.getZtpDeleteAllMethod(), asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>(this, METHODID_ZTP_DELETE_ALL, compression))).build();
         }
     }
 
     private static final int METHODID_ZTP_GET_DEVICE_ROLE = 0;
+
     private static final int METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID = 1;
+
     private static final int METHODID_ZTP_ADD = 2;
+
     private static final int METHODID_ZTP_UPDATE = 3;
+
     private static final int METHODID_ZTP_DELETE = 4;
+
     private static final int METHODID_ZTP_DELETE_ALL = 5;
 
-    private static final class MethodHandlers<Req, Resp> implements
-            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
         private final ZtpServiceImplBase serviceImpl;
+
         private final int methodId;
+
         private final String compression;
 
         MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId, String compression) {
@@ -185,42 +133,24 @@ public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.runtime.Mutin
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 case METHODID_ZTP_GET_DEVICE_ROLE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleId) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver,
-                            compression,
-                            serviceImpl::ztpGetDeviceRole);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleId) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver, compression, serviceImpl::ztpGetDeviceRole);
                     break;
                 case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver,
-                            compression,
-                            serviceImpl::ztpGetDeviceRolesByDeviceId);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver, compression, serviceImpl::ztpGetDeviceRolesByDeviceId);
                     break;
                 case METHODID_ZTP_ADD:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
-                            compression,
-                            serviceImpl::ztpAdd);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver, compression, serviceImpl::ztpAdd);
                     break;
                 case METHODID_ZTP_UPDATE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleConfig) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
-                            compression,
-                            serviceImpl::ztpUpdate);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleConfig) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver, compression, serviceImpl::ztpUpdate);
                     break;
                 case METHODID_ZTP_DELETE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
-                            compression,
-                            serviceImpl::ztpDelete);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver, compression, serviceImpl::ztpDelete);
                     break;
                 case METHODID_ZTP_DELETE_ALL:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver,
-                            compression,
-                            serviceImpl::ztpDeleteAll);
+                    io.quarkus.grpc.stubs.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver, compression, serviceImpl::ztpDeleteAll);
                     break;
                 default:
                     throw new java.lang.AssertionError();
@@ -230,11 +160,10 @@ public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.runtime.Mutin
         @java.lang.Override
         @java.lang.SuppressWarnings("unchecked")
         public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
-            switch (methodId) {
+            switch(methodId) {
                 default:
                     throw new java.lang.AssertionError();
             }
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
index c9ff87a276b87ab9448b93a9f3c2e0bb8b1f2586..0812fc8eb63c7024fba5a59a20b283045368e019 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
@@ -1,4916 +1,4386 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: ztp.proto
-
 package ztp;
 
 public final class Ztp {
-  private Ztp() {}
-  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 ztp.DeviceRoleType}
-   */
-  public enum DeviceRoleType
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>NONE = 0;</code>
-     */
-    NONE(0),
-    /**
-     * <code>DEV_OPS = 1;</code>
-     */
-    DEV_OPS(1),
-    /**
-     * <code>DEV_CONF = 2;</code>
-     */
-    DEV_CONF(2),
-    /**
-     * <code>PIPELINE_CONF = 3;</code>
-     */
-    PIPELINE_CONF(3),
-    UNRECOGNIZED(-1),
-    ;
-
-    /**
-     * <code>NONE = 0;</code>
-     */
-    public static final int NONE_VALUE = 0;
-    /**
-     * <code>DEV_OPS = 1;</code>
-     */
-    public static final int DEV_OPS_VALUE = 1;
-    /**
-     * <code>DEV_CONF = 2;</code>
-     */
-    public static final int DEV_CONF_VALUE = 2;
-    /**
-     * <code>PIPELINE_CONF = 3;</code>
-     */
-    public static final int PIPELINE_CONF_VALUE = 3;
 
+    private Ztp() {
+    }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
     }
 
-    /**
-     * @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 DeviceRoleType valueOf(int value) {
-      return forNumber(value);
+    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
+        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code ztp.DeviceRoleType}
      */
-    public static DeviceRoleType forNumber(int value) {
-      switch (value) {
-        case 0: return NONE;
-        case 1: return DEV_OPS;
-        case 2: return DEV_CONF;
-        case 3: return PIPELINE_CONF;
-        default: return null;
-      }
-    }
+    public enum DeviceRoleType implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>NONE = 0;</code>
+         */
+        NONE(0),
+        /**
+         * <code>DEV_OPS = 1;</code>
+         */
+        DEV_OPS(1),
+        /**
+         * <code>DEV_CONF = 2;</code>
+         */
+        DEV_CONF(2),
+        /**
+         * <code>PIPELINE_CONF = 3;</code>
+         */
+        PIPELINE_CONF(3),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>NONE = 0;</code>
+         */
+        public static final int NONE_VALUE = 0;
+
+        /**
+         * <code>DEV_OPS = 1;</code>
+         */
+        public static final int DEV_OPS_VALUE = 1;
+
+        /**
+         * <code>DEV_CONF = 2;</code>
+         */
+        public static final int DEV_CONF_VALUE = 2;
+
+        /**
+         * <code>PIPELINE_CONF = 3;</code>
+         */
+        public static final int PIPELINE_CONF_VALUE = 3;
+
+        public final int getNumber() {
+            if (this == UNRECOGNIZED) {
+                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
+            }
+            return value;
+        }
 
-    public static com.google.protobuf.Internal.EnumLiteMap<DeviceRoleType>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        DeviceRoleType> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<DeviceRoleType>() {
-            public DeviceRoleType findValueByNumber(int number) {
-              return DeviceRoleType.forNumber(number);
+        /**
+         * @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 DeviceRoleType 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 DeviceRoleType forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return NONE;
+                case 1:
+                    return DEV_OPS;
+                case 2:
+                    return DEV_CONF;
+                case 3:
+                    return PIPELINE_CONF;
+                default:
+                    return null;
             }
-          };
+        }
 
-    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 ztp.Ztp.getDescriptor().getEnumTypes().get(0);
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<DeviceRoleType> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    private static final DeviceRoleType[] VALUES = values();
-
-    public static DeviceRoleType 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 static final com.google.protobuf.Internal.EnumLiteMap<DeviceRoleType> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<DeviceRoleType>() {
 
-    private final int value;
+            public DeviceRoleType findValueByNumber(int number) {
+                return DeviceRoleType.forNumber(number);
+            }
+        };
 
-    private DeviceRoleType(int value) {
-      this.value = value;
-    }
+        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());
+        }
 
-    // @@protoc_insertion_point(enum_scope:ztp.DeviceRoleType)
-  }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-  /**
-   * Protobuf enum {@code ztp.ZtpDeviceState}
-   */
-  public enum ZtpDeviceState
-      implements com.google.protobuf.ProtocolMessageEnum {
-    /**
-     * <code>ZTP_DEV_STATE_UNDEFINED = 0;</code>
-     */
-    ZTP_DEV_STATE_UNDEFINED(0),
-    /**
-     * <code>ZTP_DEV_STATE_CREATED = 1;</code>
-     */
-    ZTP_DEV_STATE_CREATED(1),
-    /**
-     * <code>ZTP_DEV_STATE_UPDATED = 2;</code>
-     */
-    ZTP_DEV_STATE_UPDATED(2),
-    /**
-     * <code>ZTP_DEV_STATE_DELETED = 3;</code>
-     */
-    ZTP_DEV_STATE_DELETED(3),
-    UNRECOGNIZED(-1),
-    ;
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return ztp.Ztp.getDescriptor().getEnumTypes().get(0);
+        }
 
-    /**
-     * <code>ZTP_DEV_STATE_UNDEFINED = 0;</code>
-     */
-    public static final int ZTP_DEV_STATE_UNDEFINED_VALUE = 0;
-    /**
-     * <code>ZTP_DEV_STATE_CREATED = 1;</code>
-     */
-    public static final int ZTP_DEV_STATE_CREATED_VALUE = 1;
-    /**
-     * <code>ZTP_DEV_STATE_UPDATED = 2;</code>
-     */
-    public static final int ZTP_DEV_STATE_UPDATED_VALUE = 2;
-    /**
-     * <code>ZTP_DEV_STATE_DELETED = 3;</code>
-     */
-    public static final int ZTP_DEV_STATE_DELETED_VALUE = 3;
+        private static final DeviceRoleType[] VALUES = values();
 
+        public static DeviceRoleType 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()];
+        }
 
-    public final int getNumber() {
-      if (this == UNRECOGNIZED) {
-        throw new java.lang.IllegalArgumentException(
-            "Can't get the number of an unknown enum value.");
-      }
-      return value;
-    }
+        private final int 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 ZtpDeviceState valueOf(int value) {
-      return forNumber(value);
+        private DeviceRoleType(int value) {
+            this.value = value;
+        }
     }
 
     /**
-     * @param value The numeric wire value of the corresponding enum entry.
-     * @return The enum associated with the given numeric wire value.
+     * Protobuf enum {@code ztp.ZtpDeviceState}
      */
-    public static ZtpDeviceState forNumber(int value) {
-      switch (value) {
-        case 0: return ZTP_DEV_STATE_UNDEFINED;
-        case 1: return ZTP_DEV_STATE_CREATED;
-        case 2: return ZTP_DEV_STATE_UPDATED;
-        case 3: return ZTP_DEV_STATE_DELETED;
-        default: return null;
-      }
-    }
-
-    public static com.google.protobuf.Internal.EnumLiteMap<ZtpDeviceState>
-        internalGetValueMap() {
-      return internalValueMap;
-    }
-    private static final com.google.protobuf.Internal.EnumLiteMap<
-        ZtpDeviceState> internalValueMap =
-          new com.google.protobuf.Internal.EnumLiteMap<ZtpDeviceState>() {
-            public ZtpDeviceState findValueByNumber(int number) {
-              return ZtpDeviceState.forNumber(number);
+    public enum ZtpDeviceState implements com.google.protobuf.ProtocolMessageEnum {
+
+        /**
+         * <code>ZTP_DEV_STATE_UNDEFINED = 0;</code>
+         */
+        ZTP_DEV_STATE_UNDEFINED(0),
+        /**
+         * <code>ZTP_DEV_STATE_CREATED = 1;</code>
+         */
+        ZTP_DEV_STATE_CREATED(1),
+        /**
+         * <code>ZTP_DEV_STATE_UPDATED = 2;</code>
+         */
+        ZTP_DEV_STATE_UPDATED(2),
+        /**
+         * <code>ZTP_DEV_STATE_DELETED = 3;</code>
+         */
+        ZTP_DEV_STATE_DELETED(3),
+        UNRECOGNIZED(-1);
+
+        /**
+         * <code>ZTP_DEV_STATE_UNDEFINED = 0;</code>
+         */
+        public static final int ZTP_DEV_STATE_UNDEFINED_VALUE = 0;
+
+        /**
+         * <code>ZTP_DEV_STATE_CREATED = 1;</code>
+         */
+        public static final int ZTP_DEV_STATE_CREATED_VALUE = 1;
+
+        /**
+         * <code>ZTP_DEV_STATE_UPDATED = 2;</code>
+         */
+        public static final int ZTP_DEV_STATE_UPDATED_VALUE = 2;
+
+        /**
+         * <code>ZTP_DEV_STATE_DELETED = 3;</code>
+         */
+        public static final int ZTP_DEV_STATE_DELETED_VALUE = 3;
+
+        public final int getNumber() {
+            if (this == UNRECOGNIZED) {
+                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
             }
-          };
-
-    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 ztp.Ztp.getDescriptor().getEnumTypes().get(1);
-    }
+            return value;
+        }
 
-    private static final ZtpDeviceState[] VALUES = values();
-
-    public static ZtpDeviceState 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()];
-    }
+        /**
+         * @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 ZtpDeviceState valueOf(int value) {
+            return forNumber(value);
+        }
 
-    private final int value;
+        /**
+         * @param value The numeric wire value of the corresponding enum entry.
+         * @return The enum associated with the given numeric wire value.
+         */
+        public static ZtpDeviceState forNumber(int value) {
+            switch(value) {
+                case 0:
+                    return ZTP_DEV_STATE_UNDEFINED;
+                case 1:
+                    return ZTP_DEV_STATE_CREATED;
+                case 2:
+                    return ZTP_DEV_STATE_UPDATED;
+                case 3:
+                    return ZTP_DEV_STATE_DELETED;
+                default:
+                    return null;
+            }
+        }
 
-    private ZtpDeviceState(int value) {
-      this.value = value;
-    }
+        public static com.google.protobuf.Internal.EnumLiteMap<ZtpDeviceState> internalGetValueMap() {
+            return internalValueMap;
+        }
 
-    // @@protoc_insertion_point(enum_scope:ztp.ZtpDeviceState)
-  }
+        private static final com.google.protobuf.Internal.EnumLiteMap<ZtpDeviceState> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ZtpDeviceState>() {
 
-  public interface DeviceRoleIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleId)
-      com.google.protobuf.MessageOrBuilder {
+            public ZtpDeviceState findValueByNumber(int number) {
+                return ZtpDeviceState.forNumber(number);
+            }
+        };
 
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    boolean hasDevRoleId();
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    context.ContextOuterClass.Uuid getDevRoleId();
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     */
-    context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder();
+        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());
+        }
 
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     * @return Whether the devId field is set.
-     */
-    boolean hasDevId();
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     * @return The devId.
-     */
-    context.ContextOuterClass.DeviceId getDevId();
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     */
-    context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder();
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceRoleId}
-   */
-  public static final class DeviceRoleId extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleId)
-      DeviceRoleIdOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceRoleId.newBuilder() to construct.
-    private DeviceRoleId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceRoleId() {
-    }
+        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
+            return getDescriptor();
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceRoleId();
-    }
+        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
+            return ztp.Ztp.getDescriptor().getEnumTypes().get(1);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceRoleId(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              context.ContextOuterClass.Uuid.Builder subBuilder = null;
-              if (devRoleId_ != null) {
-                subBuilder = devRoleId_.toBuilder();
-              }
-              devRoleId_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devRoleId_);
-                devRoleId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceId.Builder subBuilder = null;
-              if (devId_ != null) {
-                subBuilder = devId_.toBuilder();
-              }
-              devId_ = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devId_);
-                devId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
-    }
+        private static final ZtpDeviceState[] VALUES = values();
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
-    }
+        public static ZtpDeviceState 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()];
+        }
 
-    public static final int DEVROLEID_FIELD_NUMBER = 1;
-    private context.ContextOuterClass.Uuid devRoleId_;
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevRoleId() {
-      return devRoleId_ != null;
-    }
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.Uuid getDevRoleId() {
-      return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
-    }
-    /**
-     * <code>.context.Uuid devRoleId = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
-      return getDevRoleId();
-    }
+        private final int value;
 
-    public static final int DEVID_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.DeviceId devId_;
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     * @return Whether the devId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevId() {
-      return devId_ != null;
-    }
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     * @return The devId.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceId getDevId() {
-      return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
-    }
-    /**
-     * <code>.context.DeviceId devId = 2;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
-      return getDevId();
+        private ZtpDeviceState(int value) {
+            this.value = value;
+        }
     }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
+    public interface DeviceRoleIdOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleId)
+    com.google.protobuf.MessageOrBuilder {
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (devRoleId_ != null) {
-        output.writeMessage(1, getDevRoleId());
-      }
-      if (devId_ != null) {
-        output.writeMessage(2, getDevId());
-      }
-      unknownFields.writeTo(output);
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        boolean hasDevRoleId();
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (devRoleId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDevRoleId());
-      }
-      if (devId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getDevId());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        context.ContextOuterClass.Uuid getDevRoleId();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceRoleId)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceRoleId other = (ztp.Ztp.DeviceRoleId) obj;
-
-      if (hasDevRoleId() != other.hasDevRoleId()) return false;
-      if (hasDevRoleId()) {
-        if (!getDevRoleId()
-            .equals(other.getDevRoleId())) return false;
-      }
-      if (hasDevId() != other.hasDevId()) return false;
-      if (hasDevId()) {
-        if (!getDevId()
-            .equals(other.getDevId())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         */
+        context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder();
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDevRoleId()) {
-        hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
-        hash = (53 * hash) + getDevRoleId().hashCode();
-      }
-      if (hasDevId()) {
-        hash = (37 * hash) + DEVID_FIELD_NUMBER;
-        hash = (53 * hash) + getDevId().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         * @return Whether the devId field is set.
+         */
+        boolean hasDevId();
 
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleId parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleId parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleId parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         * @return The devId.
+         */
+        context.ContextOuterClass.DeviceId getDevId();
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceRoleId prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         */
+        context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder();
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
     /**
      * Protobuf type {@code ztp.DeviceRoleId}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleId)
-        ztp.Ztp.DeviceRoleIdOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceRoleId.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-        if (devIdBuilder_ == null) {
-          devId_ = null;
-        } else {
-          devId_ = null;
-          devIdBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceRoleId.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleId build() {
-        ztp.Ztp.DeviceRoleId result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleId buildPartial() {
-        ztp.Ztp.DeviceRoleId result = new ztp.Ztp.DeviceRoleId(this);
-        if (devRoleIdBuilder_ == null) {
-          result.devRoleId_ = devRoleId_;
-        } else {
-          result.devRoleId_ = devRoleIdBuilder_.build();
-        }
-        if (devIdBuilder_ == null) {
-          result.devId_ = devId_;
-        } else {
-          result.devId_ = devIdBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceRoleId) {
-          return mergeFrom((ztp.Ztp.DeviceRoleId)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceRoleId other) {
-        if (other == ztp.Ztp.DeviceRoleId.getDefaultInstance()) return this;
-        if (other.hasDevRoleId()) {
-          mergeDevRoleId(other.getDevRoleId());
-        }
-        if (other.hasDevId()) {
-          mergeDevId(other.getDevId());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceRoleId parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceRoleId) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private context.ContextOuterClass.Uuid devRoleId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> devRoleIdBuilder_;
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       * @return Whether the devRoleId field is set.
-       */
-      public boolean hasDevRoleId() {
-        return devRoleIdBuilder_ != null || devRoleId_ != null;
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       * @return The devRoleId.
-       */
-      public context.ContextOuterClass.Uuid getDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
-        } else {
-          return devRoleIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(context.ContextOuterClass.Uuid value) {
-        if (devRoleIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devRoleId_ = value;
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(
-          context.ContextOuterClass.Uuid.Builder builderForValue) {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = builderForValue.build();
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public Builder mergeDevRoleId(context.ContextOuterClass.Uuid value) {
-        if (devRoleIdBuilder_ == null) {
-          if (devRoleId_ != null) {
-            devRoleId_ =
-              context.ContextOuterClass.Uuid.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
-          } else {
-            devRoleId_ = value;
-          }
-          onChanged();
-        } else {
-          devRoleIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public Builder clearDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-          onChanged();
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public context.ContextOuterClass.Uuid.Builder getDevRoleIdBuilder() {
-        
-        onChanged();
-        return getDevRoleIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
-        if (devRoleIdBuilder_ != null) {
-          return devRoleIdBuilder_.getMessageOrBuilder();
-        } else {
-          return devRoleId_ == null ?
-              context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
-        }
-      }
-      /**
-       * <code>.context.Uuid devRoleId = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
-          getDevRoleIdFieldBuilder() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
-                  getDevRoleId(),
-                  getParentForChildren(),
-                  isClean());
-          devRoleId_ = null;
-        }
-        return devRoleIdBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceId devId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> devIdBuilder_;
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       * @return Whether the devId field is set.
-       */
-      public boolean hasDevId() {
-        return devIdBuilder_ != null || devId_ != null;
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       * @return The devId.
-       */
-      public context.ContextOuterClass.DeviceId getDevId() {
-        if (devIdBuilder_ == null) {
-          return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
-        } else {
-          return devIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public Builder setDevId(context.ContextOuterClass.DeviceId value) {
-        if (devIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devId_ = value;
-          onChanged();
-        } else {
-          devIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public Builder setDevId(
-          context.ContextOuterClass.DeviceId.Builder builderForValue) {
-        if (devIdBuilder_ == null) {
-          devId_ = builderForValue.build();
-          onChanged();
-        } else {
-          devIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public Builder mergeDevId(context.ContextOuterClass.DeviceId value) {
-        if (devIdBuilder_ == null) {
-          if (devId_ != null) {
-            devId_ =
-              context.ContextOuterClass.DeviceId.newBuilder(devId_).mergeFrom(value).buildPartial();
-          } else {
-            devId_ = value;
-          }
-          onChanged();
-        } else {
-          devIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public Builder clearDevId() {
-        if (devIdBuilder_ == null) {
-          devId_ = null;
-          onChanged();
-        } else {
-          devId_ = null;
-          devIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceId.Builder getDevIdBuilder() {
-        
-        onChanged();
-        return getDevIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
-        if (devIdBuilder_ != null) {
-          return devIdBuilder_.getMessageOrBuilder();
-        } else {
-          return devId_ == null ?
-              context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
-        }
-      }
-      /**
-       * <code>.context.DeviceId devId = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> 
-          getDevIdFieldBuilder() {
-        if (devIdBuilder_ == null) {
-          devIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(
-                  getDevId(),
-                  getParentForChildren(),
-                  isClean());
-          devId_ = null;
-        }
-        return devIdBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleId)
-    }
+    public static final class DeviceRoleId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceRoleId)
+    DeviceRoleIdOrBuilder {
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleId)
-    private static final ztp.Ztp.DeviceRoleId DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleId();
-    }
+        private static final long serialVersionUID = 0L;
 
-    public static ztp.Ztp.DeviceRoleId getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        // Use DeviceRoleId.newBuilder() to construct.
+        private DeviceRoleId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    private static final com.google.protobuf.Parser<DeviceRoleId>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceRoleId>() {
-      @java.lang.Override
-      public DeviceRoleId parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceRoleId(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceRoleId> parser() {
-      return PARSER;
-    }
+        private DeviceRoleId() {
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceRoleId> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceRoleId();
+        }
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
+        }
 
-  }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
+        }
 
-  public interface DeviceRoleOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceRole)
-      com.google.protobuf.MessageOrBuilder {
+        public static final int DEVROLEID_FIELD_NUMBER = 1;
 
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    boolean hasDevRoleId();
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    ztp.Ztp.DeviceRoleId getDevRoleId();
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     */
-    ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+        private context.ContextOuterClass.Uuid devRoleId_;
 
-    /**
-     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-     * @return The enum numeric value on the wire for devRoleType.
-     */
-    int getDevRoleTypeValue();
-    /**
-     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-     * @return The devRoleType.
-     */
-    ztp.Ztp.DeviceRoleType getDevRoleType();
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceRole}
-   */
-  public static final class DeviceRole extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceRole)
-      DeviceRoleOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceRole.newBuilder() to construct.
-    private DeviceRole(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceRole() {
-      devRoleType_ = 0;
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevRoleId() {
+            return devRoleId_ != null;
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceRole();
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.Uuid getDevRoleId() {
+            return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceRole(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
-              if (devRoleId_ != null) {
-                subBuilder = devRoleId_.toBuilder();
-              }
-              devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devRoleId_);
-                devRoleId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-
-              devRoleType_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
-    }
+        /**
+         * <code>.context.Uuid devRoleId = 1;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
+            return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
-    }
+        public static final int DEVID_FIELD_NUMBER = 2;
 
-    public static final int DEVROLEID_FIELD_NUMBER = 1;
-    private ztp.Ztp.DeviceRoleId devRoleId_;
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevRoleId() {
-      return devRoleId_ != null;
-    }
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleId getDevRoleId() {
-      return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-    }
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-      return getDevRoleId();
-    }
+        private context.ContextOuterClass.DeviceId devId_;
 
-    public static final int DEVROLETYPE_FIELD_NUMBER = 2;
-    private int devRoleType_;
-    /**
-     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-     * @return The enum numeric value on the wire for devRoleType.
-     */
-    @java.lang.Override public int getDevRoleTypeValue() {
-      return devRoleType_;
-    }
-    /**
-     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-     * @return The devRoleType.
-     */
-    @java.lang.Override public ztp.Ztp.DeviceRoleType getDevRoleType() {
-      @SuppressWarnings("deprecation")
-      ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
-      return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
-    }
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         * @return Whether the devId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevId() {
+            return devId_ != null;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         * @return The devId.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceId getDevId() {
+            return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        /**
+         * <code>.context.DeviceId devId = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
+            return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (devRoleId_ != null) {
-        output.writeMessage(1, getDevRoleId());
-      }
-      if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
-        output.writeEnum(2, devRoleType_);
-      }
-      unknownFields.writeTo(output);
-    }
+        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 int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (devRoleId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDevRoleId());
-      }
-      if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, devRoleType_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            if (devRoleId_ != null) {
+                output.writeMessage(1, getDevRoleId());
+            }
+            if (devId_ != null) {
+                output.writeMessage(2, getDevId());
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceRole)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceRole other = (ztp.Ztp.DeviceRole) obj;
-
-      if (hasDevRoleId() != other.hasDevRoleId()) return false;
-      if (hasDevRoleId()) {
-        if (!getDevRoleId()
-            .equals(other.getDevRoleId())) return false;
-      }
-      if (devRoleType_ != other.devRoleType_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (devRoleId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDevRoleId());
+            }
+            if (devId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevId());
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDevRoleId()) {
-        hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
-        hash = (53 * hash) + getDevRoleId().hashCode();
-      }
-      hash = (37 * hash) + DEVROLETYPE_FIELD_NUMBER;
-      hash = (53 * hash) + devRoleType_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof ztp.Ztp.DeviceRoleId)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceRoleId other = (ztp.Ztp.DeviceRoleId) obj;
+            if (hasDevRoleId() != other.hasDevRoleId())
+                return false;
+            if (hasDevRoleId()) {
+                if (!getDevRoleId().equals(other.getDevRoleId()))
+                    return false;
+            }
+            if (hasDevId() != other.hasDevId())
+                return false;
+            if (hasDevId()) {
+                if (!getDevId().equals(other.getDevId()))
+                    return false;
+            }
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    public static ztp.Ztp.DeviceRole parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRole parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRole parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRole parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (hasDevRoleId()) {
+                hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
+                hash = (53 * hash) + getDevRoleId().hashCode();
+            }
+            if (hasDevId()) {
+                hash = (37 * hash) + DEVID_FIELD_NUMBER;
+                hash = (53 * hash) + getDevId().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceRole prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ztp.DeviceRole}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceRole)
-        ztp.Ztp.DeviceRoleOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceRole.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-        devRoleType_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceRole.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRole build() {
-        ztp.Ztp.DeviceRole result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRole buildPartial() {
-        ztp.Ztp.DeviceRole result = new ztp.Ztp.DeviceRole(this);
-        if (devRoleIdBuilder_ == null) {
-          result.devRoleId_ = devRoleId_;
-        } else {
-          result.devRoleId_ = devRoleIdBuilder_.build();
-        }
-        result.devRoleType_ = devRoleType_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceRole) {
-          return mergeFrom((ztp.Ztp.DeviceRole)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceRole other) {
-        if (other == ztp.Ztp.DeviceRole.getDefaultInstance()) return this;
-        if (other.hasDevRoleId()) {
-          mergeDevRoleId(other.getDevRoleId());
-        }
-        if (other.devRoleType_ != 0) {
-          setDevRoleTypeValue(other.getDevRoleTypeValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceRole parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceRole) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private ztp.Ztp.DeviceRoleId devRoleId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       * @return Whether the devRoleId field is set.
-       */
-      public boolean hasDevRoleId() {
-        return devRoleIdBuilder_ != null || devRoleId_ != null;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       * @return The devRoleId.
-       */
-      public ztp.Ztp.DeviceRoleId getDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-        } else {
-          return devRoleIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
-        if (devRoleIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devRoleId_ = value;
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(
-          ztp.Ztp.DeviceRoleId.Builder builderForValue) {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = builderForValue.build();
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
-        if (devRoleIdBuilder_ == null) {
-          if (devRoleId_ != null) {
-            devRoleId_ =
-              ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
-          } else {
-            devRoleId_ = value;
-          }
-          onChanged();
-        } else {
-          devRoleIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder clearDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-          onChanged();
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
-        
-        onChanged();
-        return getDevRoleIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-        if (devRoleIdBuilder_ != null) {
-          return devRoleIdBuilder_.getMessageOrBuilder();
-        } else {
-          return devRoleId_ == null ?
-              ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> 
-          getDevRoleIdFieldBuilder() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(
-                  getDevRoleId(),
-                  getParentForChildren(),
-                  isClean());
-          devRoleId_ = null;
-        }
-        return devRoleIdBuilder_;
-      }
-
-      private int devRoleType_ = 0;
-      /**
-       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-       * @return The enum numeric value on the wire for devRoleType.
-       */
-      @java.lang.Override public int getDevRoleTypeValue() {
-        return devRoleType_;
-      }
-      /**
-       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-       * @param value The enum numeric value on the wire for devRoleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDevRoleTypeValue(int value) {
-        
-        devRoleType_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-       * @return The devRoleType.
-       */
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleType getDevRoleType() {
-        @SuppressWarnings("deprecation")
-        ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
-        return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-       * @param value The devRoleType to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDevRoleType(ztp.Ztp.DeviceRoleType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        devRoleType_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDevRoleType() {
-        
-        devRoleType_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceRole)
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceRole)
-    private static final ztp.Ztp.DeviceRole DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRole();
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    public static ztp.Ztp.DeviceRole getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    private static final com.google.protobuf.Parser<DeviceRole>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceRole>() {
-      @java.lang.Override
-      public DeviceRole parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceRole(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceRole> parser() {
-      return PARSER;
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceRole> getParserForType() {
-      return PARSER;
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        public static ztp.Ztp.DeviceRoleId parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-  }
+        public static ztp.Ztp.DeviceRoleId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-  public interface DeviceRoleConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleConfig)
-      com.google.protobuf.MessageOrBuilder {
+        public static ztp.Ztp.DeviceRoleId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(ztp.Ztp.DeviceRoleId prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code ztp.DeviceRoleId}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleId)
+        ztp.Ztp.DeviceRoleIdOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
+            }
+
+            // Construct using ztp.Ztp.DeviceRoleId.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                devId_ = null;
+                if (devIdBuilder_ != null) {
+                    devIdBuilder_.dispose();
+                    devIdBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceRoleId.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleId build() {
+                ztp.Ztp.DeviceRoleId result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleId buildPartial() {
+                ztp.Ztp.DeviceRoleId result = new ztp.Ztp.DeviceRoleId(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(ztp.Ztp.DeviceRoleId result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devId_ = devIdBuilder_ == null ? devId_ : devIdBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceRoleId) {
+                    return mergeFrom((ztp.Ztp.DeviceRoleId) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(ztp.Ztp.DeviceRoleId other) {
+                if (other == ztp.Ztp.DeviceRoleId.getDefaultInstance())
+                    return this;
+                if (other.hasDevRoleId()) {
+                    mergeDevRoleId(other.getDevRoleId());
+                }
+                if (other.hasDevId()) {
+                    mergeDevId(other.getDevId());
+                }
+                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(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDevIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private context.ContextOuterClass.Uuid devRoleId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> devRoleIdBuilder_;
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             * @return Whether the devRoleId field is set.
+             */
+            public boolean hasDevRoleId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             * @return The devRoleId.
+             */
+            public context.ContextOuterClass.Uuid getDevRoleId() {
+                if (devRoleIdBuilder_ == null) {
+                    return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
+                } else {
+                    return devRoleIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(context.ContextOuterClass.Uuid value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devRoleId_ = value;
+                } else {
+                    devRoleIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(context.ContextOuterClass.Uuid.Builder builderForValue) {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = builderForValue.build();
+                } else {
+                    devRoleIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public Builder mergeDevRoleId(context.ContextOuterClass.Uuid value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
+                    } else {
+                        devRoleId_ = value;
+                    }
+                } else {
+                    devRoleIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public Builder clearDevRoleId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public context.ContextOuterClass.Uuid.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDevRoleIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            public context.ContextOuterClass.UuidOrBuilder getDevRoleIdOrBuilder() {
+                if (devRoleIdBuilder_ != null) {
+                    return devRoleIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return devRoleId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : devRoleId_;
+                }
+            }
+
+            /**
+             * <code>.context.Uuid devRoleId = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getDevRoleIdFieldBuilder() {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getDevRoleId(), getParentForChildren(), isClean());
+                    devRoleId_ = null;
+                }
+                return devRoleIdBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceId devId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> devIdBuilder_;
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             * @return Whether the devId field is set.
+             */
+            public boolean hasDevId() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             * @return The devId.
+             */
+            public context.ContextOuterClass.DeviceId getDevId() {
+                if (devIdBuilder_ == null) {
+                    return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
+                } else {
+                    return devIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public Builder setDevId(context.ContextOuterClass.DeviceId value) {
+                if (devIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devId_ = value;
+                } else {
+                    devIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public Builder setDevId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
+                if (devIdBuilder_ == null) {
+                    devId_ = builderForValue.build();
+                } else {
+                    devIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public Builder mergeDevId(context.ContextOuterClass.DeviceId value) {
+                if (devIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && devId_ != null && devId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
+                        getDevIdBuilder().mergeFrom(value);
+                    } else {
+                        devId_ = value;
+                    }
+                } else {
+                    devIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public Builder clearDevId() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devId_ = null;
+                if (devIdBuilder_ != null) {
+                    devIdBuilder_.dispose();
+                    devIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceId.Builder getDevIdBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getDevIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder() {
+                if (devIdBuilder_ != null) {
+                    return devIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return devId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : devId_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceId devId = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDevIdFieldBuilder() {
+                if (devIdBuilder_ == null) {
+                    devIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDevId(), getParentForChildren(), isClean());
+                    devId_ = null;
+                }
+                return devIdBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleId)
+        }
+
+        // @@protoc_insertion_point(class_scope:ztp.DeviceRoleId)
+        private static final ztp.Ztp.DeviceRoleId DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleId();
+        }
+
+        public static ztp.Ztp.DeviceRoleId getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceRoleId> PARSER = new com.google.protobuf.AbstractParser<DeviceRoleId>() {
+
+            @java.lang.Override
+            public DeviceRoleId 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<DeviceRoleId> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceRoleId> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceRoleOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceRole)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        boolean hasDevRoleId();
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        ztp.Ztp.DeviceRoleId getDevRoleId();
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         */
+        ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+
+        /**
+         * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+         * @return The enum numeric value on the wire for devRoleType.
+         */
+        int getDevRoleTypeValue();
+
+        /**
+         * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+         * @return The devRoleType.
+         */
+        ztp.Ztp.DeviceRoleType getDevRoleType();
+    }
 
     /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
-     * @return Whether the devRole field is set.
-     */
-    boolean hasDevRole();
-    /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
-     * @return The devRole.
+     * Protobuf type {@code ztp.DeviceRole}
      */
-    ztp.Ztp.DeviceRole getDevRole();
+    public static final class DeviceRole extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceRole)
+    DeviceRoleOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceRole.newBuilder() to construct.
+        private DeviceRole(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceRole() {
+            devRoleType_ = 0;
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceRole();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
+        }
+
+        public static final int DEVROLEID_FIELD_NUMBER = 1;
+
+        private ztp.Ztp.DeviceRoleId devRoleId_;
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevRoleId() {
+            return devRoleId_ != null;
+        }
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleId getDevRoleId() {
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+        }
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+        }
+
+        public static final int DEVROLETYPE_FIELD_NUMBER = 2;
+
+        private int devRoleType_ = 0;
+
+        /**
+         * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+         * @return The enum numeric value on the wire for devRoleType.
+         */
+        @java.lang.Override
+        public int getDevRoleTypeValue() {
+            return devRoleType_;
+        }
+
+        /**
+         * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+         * @return The devRoleType.
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleType getDevRoleType() {
+            ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
+            return result == null ? ztp.Ztp.DeviceRoleType.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 (devRoleId_ != null) {
+                output.writeMessage(1, getDevRoleId());
+            }
+            if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
+                output.writeEnum(2, devRoleType_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (devRoleId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDevRoleId());
+            }
+            if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleType_);
+            }
+            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 ztp.Ztp.DeviceRole)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceRole other = (ztp.Ztp.DeviceRole) obj;
+            if (hasDevRoleId() != other.hasDevRoleId())
+                return false;
+            if (hasDevRoleId()) {
+                if (!getDevRoleId().equals(other.getDevRoleId()))
+                    return false;
+            }
+            if (devRoleType_ != other.devRoleType_)
+                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 (hasDevRoleId()) {
+                hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
+                hash = (53 * hash) + getDevRoleId().hashCode();
+            }
+            hash = (37 * hash) + DEVROLETYPE_FIELD_NUMBER;
+            hash = (53 * hash) + devRoleType_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRole parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRole parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRole parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(ztp.Ztp.DeviceRole prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code ztp.DeviceRole}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceRole)
+        ztp.Ztp.DeviceRoleOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
+            }
+
+            // Construct using ztp.Ztp.DeviceRole.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                devRoleType_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceRole.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRole build() {
+                ztp.Ztp.DeviceRole result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRole buildPartial() {
+                ztp.Ztp.DeviceRole result = new ztp.Ztp.DeviceRole(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(ztp.Ztp.DeviceRole result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devRoleType_ = devRoleType_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceRole) {
+                    return mergeFrom((ztp.Ztp.DeviceRole) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(ztp.Ztp.DeviceRole other) {
+                if (other == ztp.Ztp.DeviceRole.getDefaultInstance())
+                    return this;
+                if (other.hasDevRoleId()) {
+                    mergeDevRoleId(other.getDevRoleId());
+                }
+                if (other.devRoleType_ != 0) {
+                    setDevRoleTypeValue(other.getDevRoleTypeValue());
+                }
+                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(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    devRoleType_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private ztp.Ztp.DeviceRoleId devRoleId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             * @return Whether the devRoleId field is set.
+             */
+            public boolean hasDevRoleId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             * @return The devRoleId.
+             */
+            public ztp.Ztp.DeviceRoleId getDevRoleId() {
+                if (devRoleIdBuilder_ == null) {
+                    return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+                } else {
+                    return devRoleIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devRoleId_ = value;
+                } else {
+                    devRoleIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = builderForValue.build();
+                } else {
+                    devRoleIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
+                    } else {
+                        devRoleId_ = value;
+                    }
+                } else {
+                    devRoleIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder clearDevRoleId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDevRoleIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+                if (devRoleIdBuilder_ != null) {
+                    return devRoleIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> getDevRoleIdFieldBuilder() {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(getDevRoleId(), getParentForChildren(), isClean());
+                    devRoleId_ = null;
+                }
+                return devRoleIdBuilder_;
+            }
+
+            private int devRoleType_ = 0;
+
+            /**
+             * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+             * @return The enum numeric value on the wire for devRoleType.
+             */
+            @java.lang.Override
+            public int getDevRoleTypeValue() {
+                return devRoleType_;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+             * @param value The enum numeric value on the wire for devRoleType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDevRoleTypeValue(int value) {
+                devRoleType_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+             * @return The devRoleType.
+             */
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleType getDevRoleType() {
+                ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.forNumber(devRoleType_);
+                return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+             * @param value The devRoleType to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDevRoleType(ztp.Ztp.DeviceRoleType value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000002;
+                devRoleType_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDevRoleType() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devRoleType_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceRole)
+        }
+
+        // @@protoc_insertion_point(class_scope:ztp.DeviceRole)
+        private static final ztp.Ztp.DeviceRole DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceRole();
+        }
+
+        public static ztp.Ztp.DeviceRole getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceRole> PARSER = new com.google.protobuf.AbstractParser<DeviceRole>() {
+
+            @java.lang.Override
+            public DeviceRole 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<DeviceRole> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceRole> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceRoleConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleConfig)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         * @return Whether the devRole field is set.
+         */
+        boolean hasDevRole();
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         * @return The devRole.
+         */
+        ztp.Ztp.DeviceRole getDevRole();
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         */
+        ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder();
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         * @return Whether the devConfig field is set.
+         */
+        boolean hasDevConfig();
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         * @return The devConfig.
+         */
+        context.ContextOuterClass.DeviceConfig getDevConfig();
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         */
+        context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder();
+    }
+
+    /**
+     * Protobuf type {@code ztp.DeviceRoleConfig}
+     */
+    public static final class DeviceRoleConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceRoleConfig)
+    DeviceRoleConfigOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceRoleConfig.newBuilder() to construct.
+        private DeviceRoleConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceRoleConfig() {
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceRoleConfig();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
+        }
+
+        public static final int DEVROLE_FIELD_NUMBER = 1;
+
+        private ztp.Ztp.DeviceRole devRole_;
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         * @return Whether the devRole field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevRole() {
+            return devRole_ != null;
+        }
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         * @return The devRole.
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRole getDevRole() {
+            return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
+        }
+
+        /**
+         * <code>.ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
+            return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
+        }
+
+        public static final int DEVCONFIG_FIELD_NUMBER = 2;
+
+        private context.ContextOuterClass.DeviceConfig devConfig_;
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         * @return Whether the devConfig field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevConfig() {
+            return devConfig_ != null;
+        }
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         * @return The devConfig.
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfig getDevConfig() {
+            return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+        }
+
+        /**
+         * <code>.context.DeviceConfig devConfig = 2;</code>
+         */
+        @java.lang.Override
+        public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
+            return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+        }
+
+        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 (devRole_ != null) {
+                output.writeMessage(1, getDevRole());
+            }
+            if (devConfig_ != null) {
+                output.writeMessage(2, getDevConfig());
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (devRole_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDevRole());
+            }
+            if (devConfig_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDevConfig());
+            }
+            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 ztp.Ztp.DeviceRoleConfig)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceRoleConfig other = (ztp.Ztp.DeviceRoleConfig) obj;
+            if (hasDevRole() != other.hasDevRole())
+                return false;
+            if (hasDevRole()) {
+                if (!getDevRole().equals(other.getDevRole()))
+                    return false;
+            }
+            if (hasDevConfig() != other.hasDevConfig())
+                return false;
+            if (hasDevConfig()) {
+                if (!getDevConfig().equals(other.getDevConfig()))
+                    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 (hasDevRole()) {
+                hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
+                hash = (53 * hash) + getDevRole().hashCode();
+            }
+            if (hasDevConfig()) {
+                hash = (37 * hash) + DEVCONFIG_FIELD_NUMBER;
+                hash = (53 * hash) + getDevConfig().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(ztp.Ztp.DeviceRoleConfig prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code ztp.DeviceRoleConfig}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleConfig)
+        ztp.Ztp.DeviceRoleConfigOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
+            }
+
+            // Construct using ztp.Ztp.DeviceRoleConfig.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                devRole_ = null;
+                if (devRoleBuilder_ != null) {
+                    devRoleBuilder_.dispose();
+                    devRoleBuilder_ = null;
+                }
+                devConfig_ = null;
+                if (devConfigBuilder_ != null) {
+                    devConfigBuilder_.dispose();
+                    devConfigBuilder_ = null;
+                }
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceRoleConfig.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleConfig build() {
+                ztp.Ztp.DeviceRoleConfig result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleConfig buildPartial() {
+                ztp.Ztp.DeviceRoleConfig result = new ztp.Ztp.DeviceRoleConfig(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(ztp.Ztp.DeviceRoleConfig result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRole_ = devRoleBuilder_ == null ? devRole_ : devRoleBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devConfig_ = devConfigBuilder_ == null ? devConfig_ : devConfigBuilder_.build();
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceRoleConfig) {
+                    return mergeFrom((ztp.Ztp.DeviceRoleConfig) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(ztp.Ztp.DeviceRoleConfig other) {
+                if (other == ztp.Ztp.DeviceRoleConfig.getDefaultInstance())
+                    return this;
+                if (other.hasDevRole()) {
+                    mergeDevRole(other.getDevRole());
+                }
+                if (other.hasDevConfig()) {
+                    mergeDevConfig(other.getDevConfig());
+                }
+                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(getDevRoleFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 18:
+                                {
+                                    input.readMessage(getDevConfigFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 18
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private ztp.Ztp.DeviceRole devRole_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             * @return Whether the devRole field is set.
+             */
+            public boolean hasDevRole() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             * @return The devRole.
+             */
+            public ztp.Ztp.DeviceRole getDevRole() {
+                if (devRoleBuilder_ == null) {
+                    return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
+                } else {
+                    return devRoleBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder setDevRole(ztp.Ztp.DeviceRole value) {
+                if (devRoleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devRole_ = value;
+                } else {
+                    devRoleBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder setDevRole(ztp.Ztp.DeviceRole.Builder builderForValue) {
+                if (devRoleBuilder_ == null) {
+                    devRole_ = builderForValue.build();
+                } else {
+                    devRoleBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder mergeDevRole(ztp.Ztp.DeviceRole value) {
+                if (devRoleBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && devRole_ != null && devRole_ != ztp.Ztp.DeviceRole.getDefaultInstance()) {
+                        getDevRoleBuilder().mergeFrom(value);
+                    } else {
+                        devRole_ = value;
+                    }
+                } else {
+                    devRoleBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder clearDevRole() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRole_ = null;
+                if (devRoleBuilder_ != null) {
+                    devRoleBuilder_.dispose();
+                    devRoleBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDevRoleFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
+                if (devRoleBuilder_ != null) {
+                    return devRoleBuilder_.getMessageOrBuilder();
+                } else {
+                    return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRole devRole = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> getDevRoleFieldBuilder() {
+                if (devRoleBuilder_ == null) {
+                    devRoleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(getDevRole(), getParentForChildren(), isClean());
+                    devRole_ = null;
+                }
+                return devRoleBuilder_;
+            }
+
+            private context.ContextOuterClass.DeviceConfig devConfig_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> devConfigBuilder_;
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             * @return Whether the devConfig field is set.
+             */
+            public boolean hasDevConfig() {
+                return ((bitField0_ & 0x00000002) != 0);
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             * @return The devConfig.
+             */
+            public context.ContextOuterClass.DeviceConfig getDevConfig() {
+                if (devConfigBuilder_ == null) {
+                    return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+                } else {
+                    return devConfigBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public Builder setDevConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (devConfigBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devConfig_ = value;
+                } else {
+                    devConfigBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public Builder setDevConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
+                if (devConfigBuilder_ == null) {
+                    devConfig_ = builderForValue.build();
+                } else {
+                    devConfigBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public Builder mergeDevConfig(context.ContextOuterClass.DeviceConfig value) {
+                if (devConfigBuilder_ == null) {
+                    if (((bitField0_ & 0x00000002) != 0) && devConfig_ != null && devConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
+                        getDevConfigBuilder().mergeFrom(value);
+                    } else {
+                        devConfig_ = value;
+                    }
+                } else {
+                    devConfigBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public Builder clearDevConfig() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devConfig_ = null;
+                if (devConfigBuilder_ != null) {
+                    devConfigBuilder_.dispose();
+                    devConfigBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceConfig.Builder getDevConfigBuilder() {
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return getDevConfigFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
+                if (devConfigBuilder_ != null) {
+                    return devConfigBuilder_.getMessageOrBuilder();
+                } else {
+                    return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+                }
+            }
+
+            /**
+             * <code>.context.DeviceConfig devConfig = 2;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> getDevConfigFieldBuilder() {
+                if (devConfigBuilder_ == null) {
+                    devConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(getDevConfig(), getParentForChildren(), isClean());
+                    devConfig_ = null;
+                }
+                return devConfigBuilder_;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleConfig)
+        }
+
+        // @@protoc_insertion_point(class_scope:ztp.DeviceRoleConfig)
+        private static final ztp.Ztp.DeviceRoleConfig DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleConfig();
+        }
+
+        public static ztp.Ztp.DeviceRoleConfig getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceRoleConfig> PARSER = new com.google.protobuf.AbstractParser<DeviceRoleConfig>() {
+
+            @java.lang.Override
+            public DeviceRoleConfig 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<DeviceRoleConfig> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceRoleConfig> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
+    }
+
+    public interface DeviceRoleListOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleList)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        java.util.List<ztp.Ztp.DeviceRole> getDevRoleList();
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        ztp.Ztp.DeviceRole getDevRole(int index);
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        int getDevRoleCount();
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> getDevRoleOrBuilderList();
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(int index);
+    }
+
     /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
+     * Protobuf type {@code ztp.DeviceRoleList}
      */
-    ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder();
+    public static final class DeviceRoleList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceRoleList)
+    DeviceRoleListOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceRoleList.newBuilder() to construct.
+        private DeviceRoleList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceRoleList() {
+            devRole_ = java.util.Collections.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceRoleList();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
+        }
+
+        public static final int DEVROLE_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private java.util.List<ztp.Ztp.DeviceRole> devRole_;
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
+            return devRole_;
+        }
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> getDevRoleOrBuilderList() {
+            return devRole_;
+        }
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public int getDevRoleCount() {
+            return devRole_.size();
+        }
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRole getDevRole(int index) {
+            return devRole_.get(index);
+        }
+
+        /**
+         * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(int index) {
+            return devRole_.get(index);
+        }
+
+        private byte memoizedIsInitialized = -1;
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+            byte isInitialized = memoizedIsInitialized;
+            if (isInitialized == 1)
+                return true;
+            if (isInitialized == 0)
+                return false;
+            memoizedIsInitialized = 1;
+            return true;
+        }
+
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < devRole_.size(); i++) {
+                output.writeMessage(1, devRole_.get(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            for (int i = 0; i < devRole_.size(); i++) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devRole_.get(i));
+            }
+            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 ztp.Ztp.DeviceRoleList)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceRoleList other = (ztp.Ztp.DeviceRoleList) obj;
+            if (!getDevRoleList().equals(other.getDevRoleList()))
+                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 (getDevRoleCount() > 0) {
+                hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
+                hash = (53 * hash) + getDevRoleList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(ztp.Ztp.DeviceRoleList prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code ztp.DeviceRoleList}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleList)
+        ztp.Ztp.DeviceRoleListOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
+            }
+
+            // Construct using ztp.Ztp.DeviceRoleList.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                if (devRoleBuilder_ == null) {
+                    devRole_ = java.util.Collections.emptyList();
+                } else {
+                    devRole_ = null;
+                    devRoleBuilder_.clear();
+                }
+                bitField0_ = (bitField0_ & ~0x00000001);
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceRoleList.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleList build() {
+                ztp.Ztp.DeviceRoleList result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleList buildPartial() {
+                ztp.Ztp.DeviceRoleList result = new ztp.Ztp.DeviceRoleList(this);
+                buildPartialRepeatedFields(result);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartialRepeatedFields(ztp.Ztp.DeviceRoleList result) {
+                if (devRoleBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0)) {
+                        devRole_ = java.util.Collections.unmodifiableList(devRole_);
+                        bitField0_ = (bitField0_ & ~0x00000001);
+                    }
+                    result.devRole_ = devRole_;
+                } else {
+                    result.devRole_ = devRoleBuilder_.build();
+                }
+            }
+
+            private void buildPartial0(ztp.Ztp.DeviceRoleList result) {
+                int from_bitField0_ = bitField0_;
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceRoleList) {
+                    return mergeFrom((ztp.Ztp.DeviceRoleList) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(ztp.Ztp.DeviceRoleList other) {
+                if (other == ztp.Ztp.DeviceRoleList.getDefaultInstance())
+                    return this;
+                if (devRoleBuilder_ == null) {
+                    if (!other.devRole_.isEmpty()) {
+                        if (devRole_.isEmpty()) {
+                            devRole_ = other.devRole_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                        } else {
+                            ensureDevRoleIsMutable();
+                            devRole_.addAll(other.devRole_);
+                        }
+                        onChanged();
+                    }
+                } else {
+                    if (!other.devRole_.isEmpty()) {
+                        if (devRoleBuilder_.isEmpty()) {
+                            devRoleBuilder_.dispose();
+                            devRoleBuilder_ = null;
+                            devRole_ = other.devRole_;
+                            bitField0_ = (bitField0_ & ~0x00000001);
+                            devRoleBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevRoleFieldBuilder() : null;
+                        } else {
+                            devRoleBuilder_.addAllMessages(other.devRole_);
+                        }
+                    }
+                }
+                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:
+                                {
+                                    ztp.Ztp.DeviceRole m = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
+                                    if (devRoleBuilder_ == null) {
+                                        ensureDevRoleIsMutable();
+                                        devRole_.add(m);
+                                    } else {
+                                        devRoleBuilder_.addMessage(m);
+                                    }
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private java.util.List<ztp.Ztp.DeviceRole> devRole_ = java.util.Collections.emptyList();
+
+            private void ensureDevRoleIsMutable() {
+                if (!((bitField0_ & 0x00000001) != 0)) {
+                    devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>(devRole_);
+                    bitField0_ |= 0x00000001;
+                }
+            }
+
+            private com.google.protobuf.RepeatedFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
+                if (devRoleBuilder_ == null) {
+                    return java.util.Collections.unmodifiableList(devRole_);
+                } else {
+                    return devRoleBuilder_.getMessageList();
+                }
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public int getDevRoleCount() {
+                if (devRoleBuilder_ == null) {
+                    return devRole_.size();
+                } else {
+                    return devRoleBuilder_.getCount();
+                }
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRole getDevRole(int index) {
+                if (devRoleBuilder_ == null) {
+                    return devRole_.get(index);
+                } else {
+                    return devRoleBuilder_.getMessage(index);
+                }
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder setDevRole(int index, ztp.Ztp.DeviceRole value) {
+                if (devRoleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevRoleIsMutable();
+                    devRole_.set(index, value);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.setMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder setDevRole(int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
+                if (devRoleBuilder_ == null) {
+                    ensureDevRoleIsMutable();
+                    devRole_.set(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devRoleBuilder_.setMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder addDevRole(ztp.Ztp.DeviceRole value) {
+                if (devRoleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevRoleIsMutable();
+                    devRole_.add(value);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.addMessage(value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder addDevRole(int index, ztp.Ztp.DeviceRole value) {
+                if (devRoleBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    ensureDevRoleIsMutable();
+                    devRole_.add(index, value);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.addMessage(index, value);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder addDevRole(ztp.Ztp.DeviceRole.Builder builderForValue) {
+                if (devRoleBuilder_ == null) {
+                    ensureDevRoleIsMutable();
+                    devRole_.add(builderForValue.build());
+                    onChanged();
+                } else {
+                    devRoleBuilder_.addMessage(builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder addDevRole(int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
+                if (devRoleBuilder_ == null) {
+                    ensureDevRoleIsMutable();
+                    devRole_.add(index, builderForValue.build());
+                    onChanged();
+                } else {
+                    devRoleBuilder_.addMessage(index, builderForValue.build());
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder addAllDevRole(java.lang.Iterable<? extends ztp.Ztp.DeviceRole> values) {
+                if (devRoleBuilder_ == null) {
+                    ensureDevRoleIsMutable();
+                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, devRole_);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.addAllMessages(values);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder clearDevRole() {
+                if (devRoleBuilder_ == null) {
+                    devRole_ = java.util.Collections.emptyList();
+                    bitField0_ = (bitField0_ & ~0x00000001);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.clear();
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public Builder removeDevRole(int index) {
+                if (devRoleBuilder_ == null) {
+                    ensureDevRoleIsMutable();
+                    devRole_.remove(index);
+                    onChanged();
+                } else {
+                    devRoleBuilder_.remove(index);
+                }
+                return this;
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder(int index) {
+                return getDevRoleFieldBuilder().getBuilder(index);
+            }
+
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(int index) {
+                if (devRoleBuilder_ == null) {
+                    return devRole_.get(index);
+                } else {
+                    return devRoleBuilder_.getMessageOrBuilder(index);
+                }
+            }
 
-    /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
-     * @return Whether the devConfig field is set.
-     */
-    boolean hasDevConfig();
-    /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
-     * @return The devConfig.
-     */
-    context.ContextOuterClass.DeviceConfig getDevConfig();
-    /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
-     */
-    context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder();
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceRoleConfig}
-   */
-  public static final class DeviceRoleConfig extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleConfig)
-      DeviceRoleConfigOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceRoleConfig.newBuilder() to construct.
-    private DeviceRoleConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceRoleConfig() {
-    }
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> getDevRoleOrBuilderList() {
+                if (devRoleBuilder_ != null) {
+                    return devRoleBuilder_.getMessageOrBuilderList();
+                } else {
+                    return java.util.Collections.unmodifiableList(devRole_);
+                }
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceRoleConfig();
-    }
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder() {
+                return getDevRoleFieldBuilder().addBuilder(ztp.Ztp.DeviceRole.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceRoleConfig(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              ztp.Ztp.DeviceRole.Builder subBuilder = null;
-              if (devRole_ != null) {
-                subBuilder = devRole_.toBuilder();
-              }
-              devRole_ = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devRole_);
-                devRole_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 18: {
-              context.ContextOuterClass.DeviceConfig.Builder subBuilder = null;
-              if (devConfig_ != null) {
-                subBuilder = devConfig_.toBuilder();
-              }
-              devConfig_ = input.readMessage(context.ContextOuterClass.DeviceConfig.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devConfig_);
-                devConfig_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
-    }
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder(int index) {
+                return getDevRoleFieldBuilder().addBuilder(index, ztp.Ztp.DeviceRole.getDefaultInstance());
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
-    }
+            /**
+             * <code>repeated .ztp.DeviceRole devRole = 1;</code>
+             */
+            public java.util.List<ztp.Ztp.DeviceRole.Builder> getDevRoleBuilderList() {
+                return getDevRoleFieldBuilder().getBuilderList();
+            }
 
-    public static final int DEVROLE_FIELD_NUMBER = 1;
-    private ztp.Ztp.DeviceRole devRole_;
-    /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
-     * @return Whether the devRole field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevRole() {
-      return devRole_ != null;
-    }
-    /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
-     * @return The devRole.
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRole getDevRole() {
-      return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
-    }
-    /**
-     * <code>.ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
-      return getDevRole();
-    }
+            private com.google.protobuf.RepeatedFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> getDevRoleFieldBuilder() {
+                if (devRoleBuilder_ == null) {
+                    devRoleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(devRole_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
+                    devRole_ = null;
+                }
+                return devRoleBuilder_;
+            }
 
-    public static final int DEVCONFIG_FIELD_NUMBER = 2;
-    private context.ContextOuterClass.DeviceConfig devConfig_;
-    /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
-     * @return Whether the devConfig field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevConfig() {
-      return devConfig_ != null;
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleList)
+        }
+
+        // @@protoc_insertion_point(class_scope:ztp.DeviceRoleList)
+        private static final ztp.Ztp.DeviceRoleList DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleList();
+        }
+
+        public static ztp.Ztp.DeviceRoleList getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceRoleList> PARSER = new com.google.protobuf.AbstractParser<DeviceRoleList>() {
+
+            @java.lang.Override
+            public DeviceRoleList 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<DeviceRoleList> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceRoleList> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
-    /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
-     * @return The devConfig.
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfig getDevConfig() {
-      return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
+
+    public interface DeviceRoleStateOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleState)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        boolean hasDevRoleId();
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        ztp.Ztp.DeviceRoleId getDevRoleId();
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         */
+        ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+
+        /**
+         * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+         * @return The enum numeric value on the wire for devRoleState.
+         */
+        int getDevRoleStateValue();
+
+        /**
+         * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+         * @return The devRoleState.
+         */
+        ztp.Ztp.ZtpDeviceState getDevRoleState();
     }
+
     /**
-     * <code>.context.DeviceConfig devConfig = 2;</code>
+     * Protobuf type {@code ztp.DeviceRoleState}
      */
-    @java.lang.Override
-    public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
-      return getDevConfig();
-    }
+    public static final class DeviceRoleState extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceRoleState)
+    DeviceRoleStateOrBuilder {
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        private static final long serialVersionUID = 0L;
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        // Use DeviceRoleState.newBuilder() to construct.
+        private DeviceRoleState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (devRole_ != null) {
-        output.writeMessage(1, getDevRole());
-      }
-      if (devConfig_ != null) {
-        output.writeMessage(2, getDevConfig());
-      }
-      unknownFields.writeTo(output);
-    }
+        private DeviceRoleState() {
+            devRoleState_ = 0;
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (devRole_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDevRole());
-      }
-      if (devConfig_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(2, getDevConfig());
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceRoleState();
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceRoleConfig)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceRoleConfig other = (ztp.Ztp.DeviceRoleConfig) obj;
-
-      if (hasDevRole() != other.hasDevRole()) return false;
-      if (hasDevRole()) {
-        if (!getDevRole()
-            .equals(other.getDevRole())) return false;
-      }
-      if (hasDevConfig() != other.hasDevConfig()) return false;
-      if (hasDevConfig()) {
-        if (!getDevConfig()
-            .equals(other.getDevConfig())) return false;
-      }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDevRole()) {
-        hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
-        hash = (53 * hash) + getDevRole().hashCode();
-      }
-      if (hasDevConfig()) {
-        hash = (37 * hash) + DEVCONFIG_FIELD_NUMBER;
-        hash = (53 * hash) + getDevConfig().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
+        }
 
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleConfig parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static final int DEVROLEID_FIELD_NUMBER = 1;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceRoleConfig prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+        private ztp.Ztp.DeviceRoleId devRoleId_;
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return Whether the devRoleId field is set.
+         */
+        @java.lang.Override
+        public boolean hasDevRoleId() {
+            return devRoleId_ != null;
+        }
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         * @return The devRoleId.
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleId getDevRoleId() {
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+        }
+
+        /**
+         * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+         */
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+            return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+        }
+
+        public static final int DEVROLESTATE_FIELD_NUMBER = 2;
+
+        private int devRoleState_ = 0;
+
+        /**
+         * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+         * @return The enum numeric value on the wire for devRoleState.
+         */
+        @java.lang.Override
+        public int getDevRoleStateValue() {
+            return devRoleState_;
+        }
+
+        /**
+         * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+         * @return The devRoleState.
+         */
+        @java.lang.Override
+        public ztp.Ztp.ZtpDeviceState getDevRoleState() {
+            ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
+            return result == null ? ztp.Ztp.ZtpDeviceState.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 (devRoleId_ != null) {
+                output.writeMessage(1, getDevRoleId());
+            }
+            if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
+                output.writeEnum(2, devRoleState_);
+            }
+            getUnknownFields().writeTo(output);
+        }
+
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            if (devRoleId_ != null) {
+                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDevRoleId());
+            }
+            if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
+                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, devRoleState_);
+            }
+            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 ztp.Ztp.DeviceRoleState)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceRoleState other = (ztp.Ztp.DeviceRoleState) obj;
+            if (hasDevRoleId() != other.hasDevRoleId())
+                return false;
+            if (hasDevRoleId()) {
+                if (!getDevRoleId().equals(other.getDevRoleId()))
+                    return false;
+            }
+            if (devRoleState_ != other.devRoleState_)
+                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 (hasDevRoleId()) {
+                hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
+                hash = (53 * hash) + getDevRoleId().hashCode();
+            }
+            hash = (37 * hash) + DEVROLESTATE_FIELD_NUMBER;
+            hash = (53 * hash) + devRoleState_;
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
+
+        public static ztp.Ztp.DeviceRoleState parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
+
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
+
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
+
+        public static Builder newBuilder(ztp.Ztp.DeviceRoleState prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
+
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
+
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
+
+        /**
+         * Protobuf type {@code ztp.DeviceRoleState}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleState)
+        ztp.Ztp.DeviceRoleStateOrBuilder {
+
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
+            }
+
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
+            }
+
+            // Construct using ztp.Ztp.DeviceRoleState.newBuilder()
+            private Builder() {
+            }
+
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
+
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                devRoleState_ = 0;
+                return this;
+            }
+
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceRoleState.getDefaultInstance();
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleState build() {
+                ztp.Ztp.DeviceRoleState result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
+
+            @java.lang.Override
+            public ztp.Ztp.DeviceRoleState buildPartial() {
+                ztp.Ztp.DeviceRoleState result = new ztp.Ztp.DeviceRoleState(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
+
+            private void buildPartial0(ztp.Ztp.DeviceRoleState result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    result.devRoleId_ = devRoleIdBuilder_ == null ? devRoleId_ : devRoleIdBuilder_.build();
+                }
+                if (((from_bitField0_ & 0x00000002) != 0)) {
+                    result.devRoleState_ = devRoleState_;
+                }
+            }
+
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceRoleState) {
+                    return mergeFrom((ztp.Ztp.DeviceRoleState) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
+
+            public Builder mergeFrom(ztp.Ztp.DeviceRoleState other) {
+                if (other == ztp.Ztp.DeviceRoleState.getDefaultInstance())
+                    return this;
+                if (other.hasDevRoleId()) {
+                    mergeDevRoleId(other.getDevRoleId());
+                }
+                if (other.devRoleState_ != 0) {
+                    setDevRoleStateValue(other.getDevRoleStateValue());
+                }
+                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(getDevRoleIdFieldBuilder().getBuilder(), extensionRegistry);
+                                    bitField0_ |= 0x00000001;
+                                    break;
+                                }
+                            // case 10
+                            case 16:
+                                {
+                                    devRoleState_ = input.readEnum();
+                                    bitField0_ |= 0x00000002;
+                                    break;
+                                }
+                            // case 16
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
+
+            private int bitField0_;
+
+            private ztp.Ztp.DeviceRoleId devRoleId_;
+
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             * @return Whether the devRoleId field is set.
+             */
+            public boolean hasDevRoleId() {
+                return ((bitField0_ & 0x00000001) != 0);
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             * @return The devRoleId.
+             */
+            public ztp.Ztp.DeviceRoleId getDevRoleId() {
+                if (devRoleIdBuilder_ == null) {
+                    return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+                } else {
+                    return devRoleIdBuilder_.getMessage();
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (value == null) {
+                        throw new NullPointerException();
+                    }
+                    devRoleId_ = value;
+                } else {
+                    devRoleIdBuilder_.setMessage(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder setDevRoleId(ztp.Ztp.DeviceRoleId.Builder builderForValue) {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleId_ = builderForValue.build();
+                } else {
+                    devRoleIdBuilder_.setMessage(builderForValue.build());
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
+                if (devRoleIdBuilder_ == null) {
+                    if (((bitField0_ & 0x00000001) != 0) && devRoleId_ != null && devRoleId_ != ztp.Ztp.DeviceRoleId.getDefaultInstance()) {
+                        getDevRoleIdBuilder().mergeFrom(value);
+                    } else {
+                        devRoleId_ = value;
+                    }
+                } else {
+                    devRoleIdBuilder_.mergeFrom(value);
+                }
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public Builder clearDevRoleId() {
+                bitField0_ = (bitField0_ & ~0x00000001);
+                devRoleId_ = null;
+                if (devRoleIdBuilder_ != null) {
+                    devRoleIdBuilder_.dispose();
+                    devRoleIdBuilder_ = null;
+                }
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return getDevRoleIdFieldBuilder().getBuilder();
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+                if (devRoleIdBuilder_ != null) {
+                    return devRoleIdBuilder_.getMessageOrBuilder();
+                } else {
+                    return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
+                }
+            }
+
+            /**
+             * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
+             */
+            private com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> getDevRoleIdFieldBuilder() {
+                if (devRoleIdBuilder_ == null) {
+                    devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(getDevRoleId(), getParentForChildren(), isClean());
+                    devRoleId_ = null;
+                }
+                return devRoleIdBuilder_;
+            }
+
+            private int devRoleState_ = 0;
+
+            /**
+             * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+             * @return The enum numeric value on the wire for devRoleState.
+             */
+            @java.lang.Override
+            public int getDevRoleStateValue() {
+                return devRoleState_;
+            }
+
+            /**
+             * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+             * @param value The enum numeric value on the wire for devRoleState to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDevRoleStateValue(int value) {
+                devRoleState_ = value;
+                bitField0_ |= 0x00000002;
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+             * @return The devRoleState.
+             */
+            @java.lang.Override
+            public ztp.Ztp.ZtpDeviceState getDevRoleState() {
+                ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.forNumber(devRoleState_);
+                return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
+            }
+
+            /**
+             * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+             * @param value The devRoleState to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDevRoleState(ztp.Ztp.ZtpDeviceState value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                bitField0_ |= 0x00000002;
+                devRoleState_ = value.getNumber();
+                onChanged();
+                return this;
+            }
+
+            /**
+             * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDevRoleState() {
+                bitField0_ = (bitField0_ & ~0x00000002);
+                devRoleState_ = 0;
+                onChanged();
+                return this;
+            }
+
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
+
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleState)
+        }
+
+        // @@protoc_insertion_point(class_scope:ztp.DeviceRoleState)
+        private static final ztp.Ztp.DeviceRoleState DEFAULT_INSTANCE;
+
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleState();
+        }
+
+        public static ztp.Ztp.DeviceRoleState getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
+
+        private static final com.google.protobuf.Parser<DeviceRoleState> PARSER = new com.google.protobuf.AbstractParser<DeviceRoleState>() {
+
+            @java.lang.Override
+            public DeviceRoleState 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<DeviceRoleState> parser() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceRoleState> getParserForType() {
+            return PARSER;
+        }
+
+        @java.lang.Override
+        public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
+    public interface DeviceDeletionResultOrBuilder extends // @@protoc_insertion_point(interface_extends:ztp.DeviceDeletionResult)
+    com.google.protobuf.MessageOrBuilder {
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @return A list containing the deleted.
+         */
+        java.util.List<java.lang.String> getDeletedList();
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @return The count of deleted.
+         */
+        int getDeletedCount();
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @param index The index of the element to return.
+         * @return The deleted at the given index.
+         */
+        java.lang.String getDeleted(int index);
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @param index The index of the value to return.
+         * @return The bytes of the deleted at the given index.
+         */
+        com.google.protobuf.ByteString getDeletedBytes(int index);
     }
+
     /**
-     * Protobuf type {@code ztp.DeviceRoleConfig}
+     * Protobuf type {@code ztp.DeviceDeletionResult}
      */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleConfig)
-        ztp.Ztp.DeviceRoleConfigOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceRoleConfig.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devRoleBuilder_ == null) {
-          devRole_ = null;
-        } else {
-          devRole_ = null;
-          devRoleBuilder_ = null;
-        }
-        if (devConfigBuilder_ == null) {
-          devConfig_ = null;
-        } else {
-          devConfig_ = null;
-          devConfigBuilder_ = null;
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceRoleConfig.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleConfig build() {
-        ztp.Ztp.DeviceRoleConfig result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleConfig buildPartial() {
-        ztp.Ztp.DeviceRoleConfig result = new ztp.Ztp.DeviceRoleConfig(this);
-        if (devRoleBuilder_ == null) {
-          result.devRole_ = devRole_;
-        } else {
-          result.devRole_ = devRoleBuilder_.build();
-        }
-        if (devConfigBuilder_ == null) {
-          result.devConfig_ = devConfig_;
-        } else {
-          result.devConfig_ = devConfigBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceRoleConfig) {
-          return mergeFrom((ztp.Ztp.DeviceRoleConfig)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceRoleConfig other) {
-        if (other == ztp.Ztp.DeviceRoleConfig.getDefaultInstance()) return this;
-        if (other.hasDevRole()) {
-          mergeDevRole(other.getDevRole());
-        }
-        if (other.hasDevConfig()) {
-          mergeDevConfig(other.getDevConfig());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceRoleConfig parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceRoleConfig) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private ztp.Ztp.DeviceRole devRole_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       * @return Whether the devRole field is set.
-       */
-      public boolean hasDevRole() {
-        return devRoleBuilder_ != null || devRole_ != null;
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       * @return The devRole.
-       */
-      public ztp.Ztp.DeviceRole getDevRole() {
-        if (devRoleBuilder_ == null) {
-          return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
-        } else {
-          return devRoleBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder setDevRole(ztp.Ztp.DeviceRole value) {
-        if (devRoleBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devRole_ = value;
-          onChanged();
-        } else {
-          devRoleBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder setDevRole(
-          ztp.Ztp.DeviceRole.Builder builderForValue) {
-        if (devRoleBuilder_ == null) {
-          devRole_ = builderForValue.build();
-          onChanged();
-        } else {
-          devRoleBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder mergeDevRole(ztp.Ztp.DeviceRole value) {
-        if (devRoleBuilder_ == null) {
-          if (devRole_ != null) {
-            devRole_ =
-              ztp.Ztp.DeviceRole.newBuilder(devRole_).mergeFrom(value).buildPartial();
-          } else {
-            devRole_ = value;
-          }
-          onChanged();
-        } else {
-          devRoleBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder clearDevRole() {
-        if (devRoleBuilder_ == null) {
-          devRole_ = null;
-          onChanged();
-        } else {
-          devRole_ = null;
-          devRoleBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder() {
-        
-        onChanged();
-        return getDevRoleFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
-        if (devRoleBuilder_ != null) {
-          return devRoleBuilder_.getMessageOrBuilder();
-        } else {
-          return devRole_ == null ?
-              ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRole devRole = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> 
-          getDevRoleFieldBuilder() {
-        if (devRoleBuilder_ == null) {
-          devRoleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(
-                  getDevRole(),
-                  getParentForChildren(),
-                  isClean());
-          devRole_ = null;
-        }
-        return devRoleBuilder_;
-      }
-
-      private context.ContextOuterClass.DeviceConfig devConfig_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> devConfigBuilder_;
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       * @return Whether the devConfig field is set.
-       */
-      public boolean hasDevConfig() {
-        return devConfigBuilder_ != null || devConfig_ != null;
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       * @return The devConfig.
-       */
-      public context.ContextOuterClass.DeviceConfig getDevConfig() {
-        if (devConfigBuilder_ == null) {
-          return devConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
-        } else {
-          return devConfigBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public Builder setDevConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (devConfigBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devConfig_ = value;
-          onChanged();
-        } else {
-          devConfigBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public Builder setDevConfig(
-          context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
-        if (devConfigBuilder_ == null) {
-          devConfig_ = builderForValue.build();
-          onChanged();
-        } else {
-          devConfigBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public Builder mergeDevConfig(context.ContextOuterClass.DeviceConfig value) {
-        if (devConfigBuilder_ == null) {
-          if (devConfig_ != null) {
-            devConfig_ =
-              context.ContextOuterClass.DeviceConfig.newBuilder(devConfig_).mergeFrom(value).buildPartial();
-          } else {
-            devConfig_ = value;
-          }
-          onChanged();
-        } else {
-          devConfigBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public Builder clearDevConfig() {
-        if (devConfigBuilder_ == null) {
-          devConfig_ = null;
-          onChanged();
-        } else {
-          devConfig_ = null;
-          devConfigBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceConfig.Builder getDevConfigBuilder() {
-        
-        onChanged();
-        return getDevConfigFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      public context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder() {
-        if (devConfigBuilder_ != null) {
-          return devConfigBuilder_.getMessageOrBuilder();
-        } else {
-          return devConfig_ == null ?
-              context.ContextOuterClass.DeviceConfig.getDefaultInstance() : devConfig_;
-        }
-      }
-      /**
-       * <code>.context.DeviceConfig devConfig = 2;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> 
-          getDevConfigFieldBuilder() {
-        if (devConfigBuilder_ == null) {
-          devConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(
-                  getDevConfig(),
-                  getParentForChildren(),
-                  isClean());
-          devConfig_ = null;
-        }
-        return devConfigBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleConfig)
-    }
+    public static final class DeviceDeletionResult extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:ztp.DeviceDeletionResult)
+    DeviceDeletionResultOrBuilder {
+
+        private static final long serialVersionUID = 0L;
+
+        // Use DeviceDeletionResult.newBuilder() to construct.
+        private DeviceDeletionResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+            super(builder);
+        }
+
+        private DeviceDeletionResult() {
+            deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+        }
+
+        @java.lang.Override
+        @SuppressWarnings({ "unused" })
+        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+            return new DeviceDeletionResult();
+        }
+
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+            return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+            return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
+        }
+
+        public static final int DELETED_FIELD_NUMBER = 1;
+
+        @SuppressWarnings("serial")
+        private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @return A list containing the deleted.
+         */
+        public com.google.protobuf.ProtocolStringList getDeletedList() {
+            return deleted_;
+        }
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @return The count of deleted.
+         */
+        public int getDeletedCount() {
+            return deleted_.size();
+        }
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @param index The index of the element to return.
+         * @return The deleted at the given index.
+         */
+        public java.lang.String getDeleted(int index) {
+            return deleted_.get(index);
+        }
+
+        /**
+         * <code>repeated string deleted = 1;</code>
+         * @param index The index of the value to return.
+         * @return The bytes of the deleted at the given index.
+         */
+        public com.google.protobuf.ByteString getDeletedBytes(int index) {
+            return deleted_.getByteString(index);
+        }
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleConfig)
-    private static final ztp.Ztp.DeviceRoleConfig DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleConfig();
-    }
+        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;
+        }
 
-    public static ztp.Ztp.DeviceRoleConfig getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+            for (int i = 0; i < deleted_.size(); i++) {
+                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deleted_.getRaw(i));
+            }
+            getUnknownFields().writeTo(output);
+        }
 
-    private static final com.google.protobuf.Parser<DeviceRoleConfig>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceRoleConfig>() {
-      @java.lang.Override
-      public DeviceRoleConfig parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceRoleConfig(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceRoleConfig> parser() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public int getSerializedSize() {
+            int size = memoizedSize;
+            if (size != -1)
+                return size;
+            size = 0;
+            {
+                int dataSize = 0;
+                for (int i = 0; i < deleted_.size(); i++) {
+                    dataSize += computeStringSizeNoTag(deleted_.getRaw(i));
+                }
+                size += dataSize;
+                size += 1 * getDeletedList().size();
+            }
+            size += getUnknownFields().getSerializedSize();
+            memoizedSize = size;
+            return size;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceRoleConfig> getParserForType() {
-      return PARSER;
-    }
+        @java.lang.Override
+        public boolean equals(final java.lang.Object obj) {
+            if (obj == this) {
+                return true;
+            }
+            if (!(obj instanceof ztp.Ztp.DeviceDeletionResult)) {
+                return super.equals(obj);
+            }
+            ztp.Ztp.DeviceDeletionResult other = (ztp.Ztp.DeviceDeletionResult) obj;
+            if (!getDeletedList().equals(other.getDeletedList()))
+                return false;
+            if (!getUnknownFields().equals(other.getUnknownFields()))
+                return false;
+            return true;
+        }
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+        @java.lang.Override
+        public int hashCode() {
+            if (memoizedHashCode != 0) {
+                return memoizedHashCode;
+            }
+            int hash = 41;
+            hash = (19 * hash) + getDescriptor().hashCode();
+            if (getDeletedCount() > 0) {
+                hash = (37 * hash) + DELETED_FIELD_NUMBER;
+                hash = (53 * hash) + getDeletedList().hashCode();
+            }
+            hash = (29 * hash) + getUnknownFields().hashCode();
+            memoizedHashCode = hash;
+            return hash;
+        }
 
-  }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-  public interface DeviceRoleListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleList)
-      com.google.protobuf.MessageOrBuilder {
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    java.util.List<ztp.Ztp.DeviceRole> 
-        getDevRoleList();
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    ztp.Ztp.DeviceRole getDevRole(int index);
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    int getDevRoleCount();
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
-        getDevRoleOrBuilderList();
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
-        int index);
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceRoleList}
-   */
-  public static final class DeviceRoleList extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleList)
-      DeviceRoleListOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceRoleList.newBuilder() to construct.
-    private DeviceRoleList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceRoleList() {
-      devRole_ = java.util.Collections.emptyList();
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceRoleList();
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceRoleList(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              devRole_.add(
-                  input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          devRole_ = java.util.Collections.unmodifiableList(devRole_);
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data);
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
+            return PARSER.parseFrom(data, extensionRegistry);
+        }
 
-    public static final int DEVROLE_FIELD_NUMBER = 1;
-    private java.util.List<ztp.Ztp.DeviceRole> devRole_;
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
-      return devRole_;
-    }
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
-        getDevRoleOrBuilderList() {
-      return devRole_;
-    }
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public int getDevRoleCount() {
-      return devRole_.size();
-    }
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRole getDevRole(int index) {
-      return devRole_.get(index);
-    }
-    /**
-     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
-        int index) {
-      return devRole_.get(index);
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < devRole_.size(); i++) {
-        output.writeMessage(1, devRole_.get(i));
-      }
-      unknownFields.writeTo(output);
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      for (int i = 0; i < devRole_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, devRole_.get(i));
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+        }
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceRoleList)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceRoleList other = (ztp.Ztp.DeviceRoleList) obj;
-
-      if (!getDevRoleList()
-          .equals(other.getDevRoleList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+        public static ztp.Ztp.DeviceDeletionResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
+            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
+        }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getDevRoleCount() > 0) {
-        hash = (37 * hash) + DEVROLE_FIELD_NUMBER;
-        hash = (53 * hash) + getDevRoleList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+        @java.lang.Override
+        public Builder newBuilderForType() {
+            return newBuilder();
+        }
 
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleList parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleList parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleList parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+        public static Builder newBuilder() {
+            return DEFAULT_INSTANCE.toBuilder();
+        }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceRoleList prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+        public static Builder newBuilder(ztp.Ztp.DeviceDeletionResult prototype) {
+            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+        }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ztp.DeviceRoleList}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleList)
-        ztp.Ztp.DeviceRoleListOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceRoleList.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-          getDevRoleFieldBuilder();
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devRoleBuilder_ == null) {
-          devRole_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        } else {
-          devRoleBuilder_.clear();
-        }
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceRoleList.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleList build() {
-        ztp.Ztp.DeviceRoleList result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleList buildPartial() {
-        ztp.Ztp.DeviceRoleList result = new ztp.Ztp.DeviceRoleList(this);
-        int from_bitField0_ = bitField0_;
-        if (devRoleBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
-            devRole_ = java.util.Collections.unmodifiableList(devRole_);
-            bitField0_ = (bitField0_ & ~0x00000001);
-          }
-          result.devRole_ = devRole_;
-        } else {
-          result.devRole_ = devRoleBuilder_.build();
-        }
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceRoleList) {
-          return mergeFrom((ztp.Ztp.DeviceRoleList)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceRoleList other) {
-        if (other == ztp.Ztp.DeviceRoleList.getDefaultInstance()) return this;
-        if (devRoleBuilder_ == null) {
-          if (!other.devRole_.isEmpty()) {
-            if (devRole_.isEmpty()) {
-              devRole_ = other.devRole_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-            } else {
-              ensureDevRoleIsMutable();
-              devRole_.addAll(other.devRole_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.devRole_.isEmpty()) {
-            if (devRoleBuilder_.isEmpty()) {
-              devRoleBuilder_.dispose();
-              devRoleBuilder_ = null;
-              devRole_ = other.devRole_;
-              bitField0_ = (bitField0_ & ~0x00000001);
-              devRoleBuilder_ = 
-                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getDevRoleFieldBuilder() : null;
-            } else {
-              devRoleBuilder_.addAllMessages(other.devRole_);
-            }
-          }
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceRoleList parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceRoleList) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private java.util.List<ztp.Ztp.DeviceRole> devRole_ =
-        java.util.Collections.emptyList();
-      private void ensureDevRoleIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>(devRole_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
-
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
-        if (devRoleBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(devRole_);
-        } else {
-          return devRoleBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public int getDevRoleCount() {
-        if (devRoleBuilder_ == null) {
-          return devRole_.size();
-        } else {
-          return devRoleBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRole getDevRole(int index) {
-        if (devRoleBuilder_ == null) {
-          return devRole_.get(index);
-        } else {
-          return devRoleBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder setDevRole(
-          int index, ztp.Ztp.DeviceRole value) {
-        if (devRoleBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevRoleIsMutable();
-          devRole_.set(index, value);
-          onChanged();
-        } else {
-          devRoleBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder setDevRole(
-          int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
-        if (devRoleBuilder_ == null) {
-          ensureDevRoleIsMutable();
-          devRole_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          devRoleBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder addDevRole(ztp.Ztp.DeviceRole value) {
-        if (devRoleBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevRoleIsMutable();
-          devRole_.add(value);
-          onChanged();
-        } else {
-          devRoleBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder addDevRole(
-          int index, ztp.Ztp.DeviceRole value) {
-        if (devRoleBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureDevRoleIsMutable();
-          devRole_.add(index, value);
-          onChanged();
-        } else {
-          devRoleBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder addDevRole(
-          ztp.Ztp.DeviceRole.Builder builderForValue) {
-        if (devRoleBuilder_ == null) {
-          ensureDevRoleIsMutable();
-          devRole_.add(builderForValue.build());
-          onChanged();
-        } else {
-          devRoleBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder addDevRole(
-          int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
-        if (devRoleBuilder_ == null) {
-          ensureDevRoleIsMutable();
-          devRole_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          devRoleBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder addAllDevRole(
-          java.lang.Iterable<? extends ztp.Ztp.DeviceRole> values) {
-        if (devRoleBuilder_ == null) {
-          ensureDevRoleIsMutable();
-          com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, devRole_);
-          onChanged();
-        } else {
-          devRoleBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder clearDevRole() {
-        if (devRoleBuilder_ == null) {
-          devRole_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
-          onChanged();
-        } else {
-          devRoleBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public Builder removeDevRole(int index) {
-        if (devRoleBuilder_ == null) {
-          ensureDevRoleIsMutable();
-          devRole_.remove(index);
-          onChanged();
-        } else {
-          devRoleBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder(
-          int index) {
-        return getDevRoleFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
-          int index) {
-        if (devRoleBuilder_ == null) {
-          return devRole_.get(index);  } else {
-          return devRoleBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
-           getDevRoleOrBuilderList() {
-        if (devRoleBuilder_ != null) {
-          return devRoleBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(devRole_);
-        }
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder() {
-        return getDevRoleFieldBuilder().addBuilder(
-            ztp.Ztp.DeviceRole.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder(
-          int index) {
-        return getDevRoleFieldBuilder().addBuilder(
-            index, ztp.Ztp.DeviceRole.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
-       */
-      public java.util.List<ztp.Ztp.DeviceRole.Builder> 
-           getDevRoleBuilderList() {
-        return getDevRoleFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilderV3<
-          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> 
-          getDevRoleFieldBuilder() {
-        if (devRoleBuilder_ == null) {
-          devRoleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(
-                  devRole_,
-                  ((bitField0_ & 0x00000001) != 0),
-                  getParentForChildren(),
-                  isClean());
-          devRole_ = null;
-        }
-        return devRoleBuilder_;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleList)
-    }
+        @java.lang.Override
+        public Builder toBuilder() {
+            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+        }
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleList)
-    private static final ztp.Ztp.DeviceRoleList DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleList();
-    }
+        @java.lang.Override
+        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+            Builder builder = new Builder(parent);
+            return builder;
+        }
 
-    public static ztp.Ztp.DeviceRoleList getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+        /**
+         * Protobuf type {@code ztp.DeviceDeletionResult}
+         */
+        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:ztp.DeviceDeletionResult)
+        ztp.Ztp.DeviceDeletionResultOrBuilder {
 
-    private static final com.google.protobuf.Parser<DeviceRoleList>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceRoleList>() {
-      @java.lang.Override
-      public DeviceRoleList parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceRoleList(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceRoleList> parser() {
-      return PARSER;
-    }
+            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+                return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceRoleList> getParserForType() {
-      return PARSER;
-    }
+            @java.lang.Override
+            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
+                return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable.ensureFieldAccessorsInitialized(ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
+            }
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            // Construct using ztp.Ztp.DeviceDeletionResult.newBuilder()
+            private Builder() {
+            }
 
-  }
+            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+                super(parent);
+            }
 
-  public interface DeviceRoleStateOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleState)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public Builder clear() {
+                super.clear();
+                bitField0_ = 0;
+                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+                return this;
+            }
 
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    boolean hasDevRoleId();
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    ztp.Ztp.DeviceRoleId getDevRoleId();
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     */
-    ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+            @java.lang.Override
+            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+                return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
+            }
 
-    /**
-     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-     * @return The enum numeric value on the wire for devRoleState.
-     */
-    int getDevRoleStateValue();
-    /**
-     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-     * @return The devRoleState.
-     */
-    ztp.Ztp.ZtpDeviceState getDevRoleState();
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceRoleState}
-   */
-  public static final class DeviceRoleState extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleState)
-      DeviceRoleStateOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceRoleState.newBuilder() to construct.
-    private DeviceRoleState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceRoleState() {
-      devRoleState_ = 0;
-    }
+            @java.lang.Override
+            public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
+                return ztp.Ztp.DeviceDeletionResult.getDefaultInstance();
+            }
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceRoleState();
-    }
+            @java.lang.Override
+            public ztp.Ztp.DeviceDeletionResult build() {
+                ztp.Ztp.DeviceDeletionResult result = buildPartial();
+                if (!result.isInitialized()) {
+                    throw newUninitializedMessageException(result);
+                }
+                return result;
+            }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceRoleState(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
-              if (devRoleId_ != null) {
-                subBuilder = devRoleId_.toBuilder();
-              }
-              devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
-              if (subBuilder != null) {
-                subBuilder.mergeFrom(devRoleId_);
-                devRoleId_ = subBuilder.buildPartial();
-              }
-
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-
-              devRoleState_ = rawValue;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
-    }
+            @java.lang.Override
+            public ztp.Ztp.DeviceDeletionResult buildPartial() {
+                ztp.Ztp.DeviceDeletionResult result = new ztp.Ztp.DeviceDeletionResult(this);
+                if (bitField0_ != 0) {
+                    buildPartial0(result);
+                }
+                onBuilt();
+                return result;
+            }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
-    }
+            private void buildPartial0(ztp.Ztp.DeviceDeletionResult result) {
+                int from_bitField0_ = bitField0_;
+                if (((from_bitField0_ & 0x00000001) != 0)) {
+                    deleted_.makeImmutable();
+                    result.deleted_ = deleted_;
+                }
+            }
 
-    public static final int DEVROLEID_FIELD_NUMBER = 1;
-    private ztp.Ztp.DeviceRoleId devRoleId_;
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return Whether the devRoleId field is set.
-     */
-    @java.lang.Override
-    public boolean hasDevRoleId() {
-      return devRoleId_ != null;
-    }
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     * @return The devRoleId.
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleId getDevRoleId() {
-      return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-    }
-    /**
-     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-     */
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-      return getDevRoleId();
-    }
+            @java.lang.Override
+            public Builder mergeFrom(com.google.protobuf.Message other) {
+                if (other instanceof ztp.Ztp.DeviceDeletionResult) {
+                    return mergeFrom((ztp.Ztp.DeviceDeletionResult) other);
+                } else {
+                    super.mergeFrom(other);
+                    return this;
+                }
+            }
 
-    public static final int DEVROLESTATE_FIELD_NUMBER = 2;
-    private int devRoleState_;
-    /**
-     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-     * @return The enum numeric value on the wire for devRoleState.
-     */
-    @java.lang.Override public int getDevRoleStateValue() {
-      return devRoleState_;
-    }
-    /**
-     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-     * @return The devRoleState.
-     */
-    @java.lang.Override public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-      @SuppressWarnings("deprecation")
-      ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
-      return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
-    }
+            public Builder mergeFrom(ztp.Ztp.DeviceDeletionResult other) {
+                if (other == ztp.Ztp.DeviceDeletionResult.getDefaultInstance())
+                    return this;
+                if (!other.deleted_.isEmpty()) {
+                    if (deleted_.isEmpty()) {
+                        deleted_ = other.deleted_;
+                        bitField0_ |= 0x00000001;
+                    } else {
+                        ensureDeletedIsMutable();
+                        deleted_.addAll(other.deleted_);
+                    }
+                    onChanged();
+                }
+                this.mergeUnknownFields(other.getUnknownFields());
+                onChanged();
+                return this;
+            }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+            @java.lang.Override
+            public final boolean isInitialized() {
+                return true;
+            }
 
-      memoizedIsInitialized = 1;
-      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:
+                                {
+                                    java.lang.String s = input.readStringRequireUtf8();
+                                    ensureDeletedIsMutable();
+                                    deleted_.add(s);
+                                    break;
+                                }
+                            // case 10
+                            default:
+                                {
+                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
+                                        // was an endgroup tag
+                                        done = true;
+                                    }
+                                    break;
+                                }
+                        }
+                        // switch (tag)
+                    }
+                    // while (!done)
+                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+                    throw e.unwrapIOException();
+                } finally {
+                    onChanged();
+                }
+                // finally
+                return this;
+            }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (devRoleId_ != null) {
-        output.writeMessage(1, getDevRoleId());
-      }
-      if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
-        output.writeEnum(2, devRoleState_);
-      }
-      unknownFields.writeTo(output);
-    }
+            private int bitField0_;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (devRoleId_ != null) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(1, getDevRoleId());
-      }
-      if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, devRoleState_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+            private com.google.protobuf.LazyStringArrayList deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceRoleState)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceRoleState other = (ztp.Ztp.DeviceRoleState) obj;
-
-      if (hasDevRoleId() != other.hasDevRoleId()) return false;
-      if (hasDevRoleId()) {
-        if (!getDevRoleId()
-            .equals(other.getDevRoleId())) return false;
-      }
-      if (devRoleState_ != other.devRoleState_) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+            private void ensureDeletedIsMutable() {
+                if (!deleted_.isModifiable()) {
+                    deleted_ = new com.google.protobuf.LazyStringArrayList(deleted_);
+                }
+                bitField0_ |= 0x00000001;
+            }
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (hasDevRoleId()) {
-        hash = (37 * hash) + DEVROLEID_FIELD_NUMBER;
-        hash = (53 * hash) + getDevRoleId().hashCode();
-      }
-      hash = (37 * hash) + DEVROLESTATE_FIELD_NUMBER;
-      hash = (53 * hash) + devRoleState_;
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @return A list containing the deleted.
+             */
+            public com.google.protobuf.ProtocolStringList getDeletedList() {
+                deleted_.makeImmutable();
+                return deleted_;
+            }
 
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleState parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleState parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceRoleState parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @return The count of deleted.
+             */
+            public int getDeletedCount() {
+                return deleted_.size();
+            }
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceRoleState prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param index The index of the element to return.
+             * @return The deleted at the given index.
+             */
+            public java.lang.String getDeleted(int index) {
+                return deleted_.get(index);
+            }
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ztp.DeviceRoleState}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleState)
-        ztp.Ztp.DeviceRoleStateOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceRoleState.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-        devRoleState_ = 0;
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceRoleState.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleState build() {
-        ztp.Ztp.DeviceRoleState result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceRoleState buildPartial() {
-        ztp.Ztp.DeviceRoleState result = new ztp.Ztp.DeviceRoleState(this);
-        if (devRoleIdBuilder_ == null) {
-          result.devRoleId_ = devRoleId_;
-        } else {
-          result.devRoleId_ = devRoleIdBuilder_.build();
-        }
-        result.devRoleState_ = devRoleState_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceRoleState) {
-          return mergeFrom((ztp.Ztp.DeviceRoleState)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceRoleState other) {
-        if (other == ztp.Ztp.DeviceRoleState.getDefaultInstance()) return this;
-        if (other.hasDevRoleId()) {
-          mergeDevRoleId(other.getDevRoleId());
-        }
-        if (other.devRoleState_ != 0) {
-          setDevRoleStateValue(other.getDevRoleStateValue());
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceRoleState parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceRoleState) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private ztp.Ztp.DeviceRoleId devRoleId_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       * @return Whether the devRoleId field is set.
-       */
-      public boolean hasDevRoleId() {
-        return devRoleIdBuilder_ != null || devRoleId_ != null;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       * @return The devRoleId.
-       */
-      public ztp.Ztp.DeviceRoleId getDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-        } else {
-          return devRoleIdBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
-        if (devRoleIdBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          devRoleId_ = value;
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder setDevRoleId(
-          ztp.Ztp.DeviceRoleId.Builder builderForValue) {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = builderForValue.build();
-          onChanged();
-        } else {
-          devRoleIdBuilder_.setMessage(builderForValue.build());
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
-        if (devRoleIdBuilder_ == null) {
-          if (devRoleId_ != null) {
-            devRoleId_ =
-              ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
-          } else {
-            devRoleId_ = value;
-          }
-          onChanged();
-        } else {
-          devRoleIdBuilder_.mergeFrom(value);
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public Builder clearDevRoleId() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleId_ = null;
-          onChanged();
-        } else {
-          devRoleId_ = null;
-          devRoleIdBuilder_ = null;
-        }
-
-        return this;
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
-        
-        onChanged();
-        return getDevRoleIdFieldBuilder().getBuilder();
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
-        if (devRoleIdBuilder_ != null) {
-          return devRoleIdBuilder_.getMessageOrBuilder();
-        } else {
-          return devRoleId_ == null ?
-              ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
-        }
-      }
-      /**
-       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> 
-          getDevRoleIdFieldBuilder() {
-        if (devRoleIdBuilder_ == null) {
-          devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(
-                  getDevRoleId(),
-                  getParentForChildren(),
-                  isClean());
-          devRoleId_ = null;
-        }
-        return devRoleIdBuilder_;
-      }
-
-      private int devRoleState_ = 0;
-      /**
-       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-       * @return The enum numeric value on the wire for devRoleState.
-       */
-      @java.lang.Override public int getDevRoleStateValue() {
-        return devRoleState_;
-      }
-      /**
-       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-       * @param value The enum numeric value on the wire for devRoleState to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDevRoleStateValue(int value) {
-        
-        devRoleState_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-       * @return The devRoleState.
-       */
-      @java.lang.Override
-      public ztp.Ztp.ZtpDeviceState getDevRoleState() {
-        @SuppressWarnings("deprecation")
-        ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
-        return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
-      }
-      /**
-       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-       * @param value The devRoleState to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDevRoleState(ztp.Ztp.ZtpDeviceState value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        
-        devRoleState_ = value.getNumber();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDevRoleState() {
-        
-        devRoleState_ = 0;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleState)
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param index The index of the value to return.
+             * @return The bytes of the deleted at the given index.
+             */
+            public com.google.protobuf.ByteString getDeletedBytes(int index) {
+                return deleted_.getByteString(index);
+            }
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleState)
-    private static final ztp.Ztp.DeviceRoleState DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleState();
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param index The index to set the value at.
+             * @param value The deleted to set.
+             * @return This builder for chaining.
+             */
+            public Builder setDeleted(int index, java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureDeletedIsMutable();
+                deleted_.set(index, value);
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    public static ztp.Ztp.DeviceRoleState getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param value The deleted to add.
+             * @return This builder for chaining.
+             */
+            public Builder addDeleted(java.lang.String value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                ensureDeletedIsMutable();
+                deleted_.add(value);
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    private static final com.google.protobuf.Parser<DeviceRoleState>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceRoleState>() {
-      @java.lang.Override
-      public DeviceRoleState parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceRoleState(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceRoleState> parser() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param values The deleted to add.
+             * @return This builder for chaining.
+             */
+            public Builder addAllDeleted(java.lang.Iterable<java.lang.String> values) {
+                ensureDeletedIsMutable();
+                com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deleted_);
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceRoleState> getParserForType() {
-      return PARSER;
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @return This builder for chaining.
+             */
+            public Builder clearDeleted() {
+                deleted_ = com.google.protobuf.LazyStringArrayList.emptyList();
+                bitField0_ = (bitField0_ & ~0x00000001);
+                ;
+                onChanged();
+                return this;
+            }
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
+            /**
+             * <code>repeated string deleted = 1;</code>
+             * @param value The bytes of the deleted to add.
+             * @return This builder for chaining.
+             */
+            public Builder addDeletedBytes(com.google.protobuf.ByteString value) {
+                if (value == null) {
+                    throw new NullPointerException();
+                }
+                checkByteStringIsUtf8(value);
+                ensureDeletedIsMutable();
+                deleted_.add(value);
+                bitField0_ |= 0x00000001;
+                onChanged();
+                return this;
+            }
 
-  }
+            @java.lang.Override
+            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.setUnknownFields(unknownFields);
+            }
 
-  public interface DeviceDeletionResultOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:ztp.DeviceDeletionResult)
-      com.google.protobuf.MessageOrBuilder {
+            @java.lang.Override
+            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
+                return super.mergeUnknownFields(unknownFields);
+            }
+            // @@protoc_insertion_point(builder_scope:ztp.DeviceDeletionResult)
+        }
 
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @return A list containing the deleted.
-     */
-    java.util.List<java.lang.String>
-        getDeletedList();
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @return The count of deleted.
-     */
-    int getDeletedCount();
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @param index The index of the element to return.
-     * @return The deleted at the given index.
-     */
-    java.lang.String getDeleted(int index);
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the deleted at the given index.
-     */
-    com.google.protobuf.ByteString
-        getDeletedBytes(int index);
-  }
-  /**
-   * Protobuf type {@code ztp.DeviceDeletionResult}
-   */
-  public static final class DeviceDeletionResult extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:ztp.DeviceDeletionResult)
-      DeviceDeletionResultOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use DeviceDeletionResult.newBuilder() to construct.
-    private DeviceDeletionResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-      super(builder);
-    }
-    private DeviceDeletionResult() {
-      deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-    }
+        // @@protoc_insertion_point(class_scope:ztp.DeviceDeletionResult)
+        private static final ztp.Ztp.DeviceDeletionResult DEFAULT_INSTANCE;
 
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new DeviceDeletionResult();
-    }
+        static {
+            DEFAULT_INSTANCE = new ztp.Ztp.DeviceDeletionResult();
+        }
 
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private DeviceDeletionResult(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 10: {
-              java.lang.String s = input.readStringRequireUtf8();
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                deleted_ = new com.google.protobuf.LazyStringArrayList();
-                mutable_bitField0_ |= 0x00000001;
-              }
-              deleted_.add(s);
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          deleted_ = deleted_.getUnmodifiableView();
-        }
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
-    }
+        public static ztp.Ztp.DeviceDeletionResult getDefaultInstance() {
+            return DEFAULT_INSTANCE;
+        }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
-    }
+        private static final com.google.protobuf.Parser<DeviceDeletionResult> PARSER = new com.google.protobuf.AbstractParser<DeviceDeletionResult>() {
+
+            @java.lang.Override
+            public DeviceDeletionResult 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 final int DELETED_FIELD_NUMBER = 1;
-    private com.google.protobuf.LazyStringList deleted_;
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @return A list containing the deleted.
-     */
-    public com.google.protobuf.ProtocolStringList
-        getDeletedList() {
-      return deleted_;
-    }
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @return The count of deleted.
-     */
-    public int getDeletedCount() {
-      return deleted_.size();
-    }
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @param index The index of the element to return.
-     * @return The deleted at the given index.
-     */
-    public java.lang.String getDeleted(int index) {
-      return deleted_.get(index);
-    }
-    /**
-     * <code>repeated string deleted = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the deleted at the given index.
-     */
-    public com.google.protobuf.ByteString
-        getDeletedBytes(int index) {
-      return deleted_.getByteString(index);
-    }
+        public static com.google.protobuf.Parser<DeviceDeletionResult> parser() {
+            return PARSER;
+        }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+        @java.lang.Override
+        public com.google.protobuf.Parser<DeviceDeletionResult> getParserForType() {
+            return PARSER;
+        }
 
-      memoizedIsInitialized = 1;
-      return true;
+        @java.lang.Override
+        public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
+            return DEFAULT_INSTANCE;
+        }
     }
 
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      for (int i = 0; i < deleted_.size(); i++) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, deleted_.getRaw(i));
-      }
-      unknownFields.writeTo(output);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceRoleId_descriptor;
 
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      {
-        int dataSize = 0;
-        for (int i = 0; i < deleted_.size(); i++) {
-          dataSize += computeStringSizeNoTag(deleted_.getRaw(i));
-        }
-        size += dataSize;
-        size += 1 * getDeletedList().size();
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceRoleId_fieldAccessorTable;
 
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof ztp.Ztp.DeviceDeletionResult)) {
-        return super.equals(obj);
-      }
-      ztp.Ztp.DeviceDeletionResult other = (ztp.Ztp.DeviceDeletionResult) obj;
-
-      if (!getDeletedList()
-          .equals(other.getDeletedList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceRole_descriptor;
 
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      if (getDeletedCount() > 0) {
-        hash = (37 * hash) + DELETED_FIELD_NUMBER;
-        hash = (53 * hash) + getDeletedList().hashCode();
-      }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceRole_fieldAccessorTable;
 
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static ztp.Ztp.DeviceDeletionResult parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceRoleConfig_descriptor;
 
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(ztp.Ztp.DeviceDeletionResult prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceRoleConfig_fieldAccessorTable;
 
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code ztp.DeviceDeletionResult}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:ztp.DeviceDeletionResult)
-        ztp.Ztp.DeviceDeletionResultOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
-      }
-
-      // Construct using ztp.Ztp.DeviceDeletionResult.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
-        return ztp.Ztp.DeviceDeletionResult.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceDeletionResult build() {
-        ztp.Ztp.DeviceDeletionResult result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public ztp.Ztp.DeviceDeletionResult buildPartial() {
-        ztp.Ztp.DeviceDeletionResult result = new ztp.Ztp.DeviceDeletionResult(this);
-        int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          deleted_ = deleted_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000001);
-        }
-        result.deleted_ = deleted_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof ztp.Ztp.DeviceDeletionResult) {
-          return mergeFrom((ztp.Ztp.DeviceDeletionResult)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(ztp.Ztp.DeviceDeletionResult other) {
-        if (other == ztp.Ztp.DeviceDeletionResult.getDefaultInstance()) return this;
-        if (!other.deleted_.isEmpty()) {
-          if (deleted_.isEmpty()) {
-            deleted_ = other.deleted_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureDeletedIsMutable();
-            deleted_.addAll(other.deleted_);
-          }
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        ztp.Ztp.DeviceDeletionResult parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (ztp.Ztp.DeviceDeletionResult) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-      private int bitField0_;
-
-      private com.google.protobuf.LazyStringList deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureDeletedIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          deleted_ = new com.google.protobuf.LazyStringArrayList(deleted_);
-          bitField0_ |= 0x00000001;
-         }
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @return A list containing the deleted.
-       */
-      public com.google.protobuf.ProtocolStringList
-          getDeletedList() {
-        return deleted_.getUnmodifiableView();
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @return The count of deleted.
-       */
-      public int getDeletedCount() {
-        return deleted_.size();
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param index The index of the element to return.
-       * @return The deleted at the given index.
-       */
-      public java.lang.String getDeleted(int index) {
-        return deleted_.get(index);
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param index The index of the value to return.
-       * @return The bytes of the deleted at the given index.
-       */
-      public com.google.protobuf.ByteString
-          getDeletedBytes(int index) {
-        return deleted_.getByteString(index);
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param index The index to set the value at.
-       * @param value The deleted to set.
-       * @return This builder for chaining.
-       */
-      public Builder setDeleted(
-          int index, java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureDeletedIsMutable();
-        deleted_.set(index, value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param value The deleted to add.
-       * @return This builder for chaining.
-       */
-      public Builder addDeleted(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  ensureDeletedIsMutable();
-        deleted_.add(value);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param values The deleted to add.
-       * @return This builder for chaining.
-       */
-      public Builder addAllDeleted(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureDeletedIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, deleted_);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @return This builder for chaining.
-       */
-      public Builder clearDeleted() {
-        deleted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>repeated string deleted = 1;</code>
-       * @param value The bytes of the deleted to add.
-       * @return This builder for chaining.
-       */
-      public Builder addDeletedBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        ensureDeletedIsMutable();
-        deleted_.add(value);
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:ztp.DeviceDeletionResult)
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceRoleList_descriptor;
 
-    // @@protoc_insertion_point(class_scope:ztp.DeviceDeletionResult)
-    private static final ztp.Ztp.DeviceDeletionResult DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new ztp.Ztp.DeviceDeletionResult();
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceRoleList_fieldAccessorTable;
 
-    public static ztp.Ztp.DeviceDeletionResult getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceRoleState_descriptor;
 
-    private static final com.google.protobuf.Parser<DeviceDeletionResult>
-        PARSER = new com.google.protobuf.AbstractParser<DeviceDeletionResult>() {
-      @java.lang.Override
-      public DeviceDeletionResult parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new DeviceDeletionResult(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser<DeviceDeletionResult> parser() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceRoleState_fieldAccessorTable;
 
-    @java.lang.Override
-    public com.google.protobuf.Parser<DeviceDeletionResult> getParserForType() {
-      return PARSER;
-    }
+    private static final com.google.protobuf.Descriptors.Descriptor internal_static_ztp_DeviceDeletionResult_descriptor;
+
+    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ztp_DeviceDeletionResult_fieldAccessorTable;
 
-    @java.lang.Override
-    public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
+    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+        return descriptor;
     }
 
-  }
-
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceRoleId_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceRoleId_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceRole_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceRole_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceRoleConfig_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceRoleConfig_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceRoleList_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceRoleList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceRoleState_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceRoleState_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_ztp_DeviceDeletionResult_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_ztp_DeviceDeletionResult_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\tztp.proto\022\003ztp\032\rcontext.proto\"R\n\014Devic" +
-      "eRoleId\022 \n\tdevRoleId\030\001 \001(\0132\r.context.Uui" +
-      "d\022 \n\005devId\030\002 \001(\0132\021.context.DeviceId\"\\\n\nD" +
-      "eviceRole\022$\n\tdevRoleId\030\001 \001(\0132\021.ztp.Devic" +
-      "eRoleId\022(\n\013devRoleType\030\002 \001(\0162\023.ztp.Devic" +
-      "eRoleType\"^\n\020DeviceRoleConfig\022 \n\007devRole" +
-      "\030\001 \001(\0132\017.ztp.DeviceRole\022(\n\tdevConfig\030\002 \001" +
-      "(\0132\025.context.DeviceConfig\"2\n\016DeviceRoleL" +
-      "ist\022 \n\007devRole\030\001 \003(\0132\017.ztp.DeviceRole\"b\n" +
-      "\017DeviceRoleState\022$\n\tdevRoleId\030\001 \001(\0132\021.zt" +
-      "p.DeviceRoleId\022)\n\014devRoleState\030\002 \001(\0162\023.z" +
-      "tp.ZtpDeviceState\"\'\n\024DeviceDeletionResul" +
-      "t\022\017\n\007deleted\030\001 \003(\t*H\n\016DeviceRoleType\022\010\n\004" +
-      "NONE\020\000\022\013\n\007DEV_OPS\020\001\022\014\n\010DEV_CONF\020\002\022\021\n\rPIP" +
-      "ELINE_CONF\020\003*~\n\016ZtpDeviceState\022\033\n\027ZTP_DE" +
-      "V_STATE_UNDEFINED\020\000\022\031\n\025ZTP_DEV_STATE_CRE" +
-      "ATED\020\001\022\031\n\025ZTP_DEV_STATE_UPDATED\020\002\022\031\n\025ZTP" +
-      "_DEV_STATE_DELETED\020\0032\361\002\n\nZtpService\0228\n\020Z" +
-      "tpGetDeviceRole\022\021.ztp.DeviceRoleId\032\017.ztp" +
-      ".DeviceRole\"\000\022G\n\033ZtpGetDeviceRolesByDevi" +
-      "ceId\022\021.context.DeviceId\032\023.ztp.DeviceRole" +
-      "List\"\000\0221\n\006ZtpAdd\022\017.ztp.DeviceRole\032\024.ztp." +
-      "DeviceRoleState\"\000\022:\n\tZtpUpdate\022\025.ztp.Dev" +
-      "iceRoleConfig\032\024.ztp.DeviceRoleState\"\000\0224\n" +
-      "\tZtpDelete\022\017.ztp.DeviceRole\032\024.ztp.Device" +
-      "RoleState\"\000\022;\n\014ZtpDeleteAll\022\016.context.Em" +
-      "pty\032\031.ztp.DeviceDeletionResult\"\000b\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-          context.ContextOuterClass.getDescriptor(),
-        });
-    internal_static_ztp_DeviceRoleId_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_ztp_DeviceRoleId_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceRoleId_descriptor,
-        new java.lang.String[] { "DevRoleId", "DevId", });
-    internal_static_ztp_DeviceRole_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_ztp_DeviceRole_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceRole_descriptor,
-        new java.lang.String[] { "DevRoleId", "DevRoleType", });
-    internal_static_ztp_DeviceRoleConfig_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_ztp_DeviceRoleConfig_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceRoleConfig_descriptor,
-        new java.lang.String[] { "DevRole", "DevConfig", });
-    internal_static_ztp_DeviceRoleList_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_ztp_DeviceRoleList_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceRoleList_descriptor,
-        new java.lang.String[] { "DevRole", });
-    internal_static_ztp_DeviceRoleState_descriptor =
-      getDescriptor().getMessageTypes().get(4);
-    internal_static_ztp_DeviceRoleState_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceRoleState_descriptor,
-        new java.lang.String[] { "DevRoleId", "DevRoleState", });
-    internal_static_ztp_DeviceDeletionResult_descriptor =
-      getDescriptor().getMessageTypes().get(5);
-    internal_static_ztp_DeviceDeletionResult_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_ztp_DeviceDeletionResult_descriptor,
-        new java.lang.String[] { "Deleted", });
-    context.ContextOuterClass.getDescriptor();
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
+    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;
+
+    static {
+        java.lang.String[] descriptorData = { "\n\tztp.proto\022\003ztp\032\rcontext.proto\"R\n\014Devic" + "eRoleId\022 \n\tdevRoleId\030\001 \001(\0132\r.context.Uui" + "d\022 \n\005devId\030\002 \001(\0132\021.context.DeviceId\"\\\n\nD" + "eviceRole\022$\n\tdevRoleId\030\001 \001(\0132\021.ztp.Devic" + "eRoleId\022(\n\013devRoleType\030\002 \001(\0162\023.ztp.Devic" + "eRoleType\"^\n\020DeviceRoleConfig\022 \n\007devRole" + "\030\001 \001(\0132\017.ztp.DeviceRole\022(\n\tdevConfig\030\002 \001" + "(\0132\025.context.DeviceConfig\"2\n\016DeviceRoleL" + "ist\022 \n\007devRole\030\001 \003(\0132\017.ztp.DeviceRole\"b\n" + "\017DeviceRoleState\022$\n\tdevRoleId\030\001 \001(\0132\021.zt" + "p.DeviceRoleId\022)\n\014devRoleState\030\002 \001(\0162\023.z" + "tp.ZtpDeviceState\"\'\n\024DeviceDeletionResul" + "t\022\017\n\007deleted\030\001 \003(\t*H\n\016DeviceRoleType\022\010\n\004" + "NONE\020\000\022\013\n\007DEV_OPS\020\001\022\014\n\010DEV_CONF\020\002\022\021\n\rPIP" + "ELINE_CONF\020\003*~\n\016ZtpDeviceState\022\033\n\027ZTP_DE" + "V_STATE_UNDEFINED\020\000\022\031\n\025ZTP_DEV_STATE_CRE" + "ATED\020\001\022\031\n\025ZTP_DEV_STATE_UPDATED\020\002\022\031\n\025ZTP" + "_DEV_STATE_DELETED\020\0032\361\002\n\nZtpService\0228\n\020Z" + "tpGetDeviceRole\022\021.ztp.DeviceRoleId\032\017.ztp" + ".DeviceRole\"\000\022G\n\033ZtpGetDeviceRolesByDevi" + "ceId\022\021.context.DeviceId\032\023.ztp.DeviceRole" + "List\"\000\0221\n\006ZtpAdd\022\017.ztp.DeviceRole\032\024.ztp." + "DeviceRoleState\"\000\022:\n\tZtpUpdate\022\025.ztp.Dev" + "iceRoleConfig\032\024.ztp.DeviceRoleState\"\000\0224\n" + "\tZtpDelete\022\017.ztp.DeviceRole\032\024.ztp.Device" + "RoleState\"\000\022;\n\014ZtpDeleteAll\022\016.context.Em" + "pty\032\031.ztp.DeviceDeletionResult\"\000b\006proto3" };
+        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { context.ContextOuterClass.getDescriptor() });
+        internal_static_ztp_DeviceRoleId_descriptor = getDescriptor().getMessageTypes().get(0);
+        internal_static_ztp_DeviceRoleId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceRoleId_descriptor, new java.lang.String[] { "DevRoleId", "DevId" });
+        internal_static_ztp_DeviceRole_descriptor = getDescriptor().getMessageTypes().get(1);
+        internal_static_ztp_DeviceRole_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceRole_descriptor, new java.lang.String[] { "DevRoleId", "DevRoleType" });
+        internal_static_ztp_DeviceRoleConfig_descriptor = getDescriptor().getMessageTypes().get(2);
+        internal_static_ztp_DeviceRoleConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceRoleConfig_descriptor, new java.lang.String[] { "DevRole", "DevConfig" });
+        internal_static_ztp_DeviceRoleList_descriptor = getDescriptor().getMessageTypes().get(3);
+        internal_static_ztp_DeviceRoleList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceRoleList_descriptor, new java.lang.String[] { "DevRole" });
+        internal_static_ztp_DeviceRoleState_descriptor = getDescriptor().getMessageTypes().get(4);
+        internal_static_ztp_DeviceRoleState_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceRoleState_descriptor, new java.lang.String[] { "DevRoleId", "DevRoleState" });
+        internal_static_ztp_DeviceDeletionResult_descriptor = getDescriptor().getMessageTypes().get(5);
+        internal_static_ztp_DeviceDeletionResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_ztp_DeviceDeletionResult_descriptor, new java.lang.String[] { "Deleted" });
+        context.ContextOuterClass.getDescriptor();
+    }
+    // @@protoc_insertion_point(outer_class_scope)
 }
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
index 6afcf457f919db71fa465a903a7afc52900c2ad0..ff4fd1461db2913cf7b69ce85cdf3052addeccd1 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
@@ -1,26 +1,19 @@
 package ztp;
 
-import io.quarkus.grpc.runtime.MutinyService;
+import io.quarkus.grpc.MutinyService;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: ztp.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: ztp.proto")
 public interface ZtpService extends MutinyService {
 
-    
     io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request);
-    
+
     io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request);
-    
+
     io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request);
-    
+
     io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request);
-    
+
     io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request);
-    
-    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request);
-    
-    
-    
 
-}
\ No newline at end of file
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request);
+}
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
index bc15903127c9ee837e991f9b75a389b684ec568c..9b55f0111ed82c2ffaafe8ce80062a19227e0067 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
@@ -2,66 +2,68 @@ package ztp;
 
 import io.grpc.BindableService;
 import io.quarkus.grpc.GrpcService;
-import io.quarkus.grpc.runtime.MutinyBean;
+import io.quarkus.grpc.MutinyBean;
 
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: ztp.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: ztp.proto")
 public class ZtpServiceBean extends MutinyZtpServiceGrpc.ZtpServiceImplBase implements BindableService, MutinyBean {
 
     private final ZtpService delegate;
 
     ZtpServiceBean(@GrpcService ZtpService delegate) {
-       this.delegate = delegate;
+        this.delegate = delegate;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
-       try {
-         return delegate.ztpGetDeviceRole(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpGetDeviceRole(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-       try {
-         return delegate.ztpGetDeviceRolesByDeviceId(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpGetDeviceRolesByDeviceId(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
-       try {
-         return delegate.ztpAdd(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpAdd(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
-       try {
-         return delegate.ztpUpdate(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpUpdate(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
-       try {
-         return delegate.ztpDelete(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpDelete(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
-       try {
-         return delegate.ztpDeleteAll(request);
-       } catch (UnsupportedOperationException e) {
-          throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
-       }
+        try {
+            return delegate.ztpDeleteAll(request);
+        } catch (UnsupportedOperationException e) {
+            throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+        }
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
index 00abbc181d46f0df5588023c8da29786a73ae965..409949ba6322286500b837cbec807986ee333a96 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
@@ -1,48 +1,57 @@
 package ztp;
 
 import java.util.function.BiFunction;
+import io.quarkus.grpc.MutinyClient;
 
-import io.quarkus.grpc.runtime.MutinyClient;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: ztp.proto")
+@jakarta.annotation.Generated(value = "by Mutiny Grpc generator", comments = "Source: ztp.proto")
 public class ZtpServiceClient implements ZtpService, MutinyClient<MutinyZtpServiceGrpc.MutinyZtpServiceStub> {
 
     private final MutinyZtpServiceGrpc.MutinyZtpServiceStub stub;
 
     public ZtpServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyZtpServiceGrpc.MutinyZtpServiceStub, MutinyZtpServiceGrpc.MutinyZtpServiceStub> stubConfigurator) {
-       this.stub = stubConfigurator.apply(name,MutinyZtpServiceGrpc.newMutinyStub(channel));
+        this.stub = stubConfigurator.apply(name, MutinyZtpServiceGrpc.newMutinyStub(channel));
+    }
+
+    private ZtpServiceClient(MutinyZtpServiceGrpc.MutinyZtpServiceStub stub) {
+        this.stub = stub;
+    }
+
+    public ZtpServiceClient newInstanceWithStub(MutinyZtpServiceGrpc.MutinyZtpServiceStub stub) {
+        return new ZtpServiceClient(stub);
     }
 
     @Override
     public MutinyZtpServiceGrpc.MutinyZtpServiceStub getStub() {
-       return stub;
+        return stub;
     }
 
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
-       return stub.ztpGetDeviceRole(request);
+        return stub.ztpGetDeviceRole(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-       return stub.ztpGetDeviceRolesByDeviceId(request);
+        return stub.ztpGetDeviceRolesByDeviceId(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
-       return stub.ztpAdd(request);
+        return stub.ztpAdd(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
-       return stub.ztpUpdate(request);
+        return stub.ztpUpdate(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
-       return stub.ztpDelete(request);
+        return stub.ztpDelete(request);
     }
+
     @Override
     public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
-       return stub.ztpDeleteAll(request);
+        return stub.ztpDeleteAll(request);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
index ece33078b8058c2d63ddca4060b1b095d21dd8be..e989a3637bf261c9c5557f048f173a1a3a225f21 100644
--- a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
@@ -4,642 +4,465 @@ import static io.grpc.MethodDescriptor.generateFullMethodName;
 
 /**
  */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.38.1)",
-    comments = "Source: ztp.proto")
+@io.quarkus.grpc.common.Generated(value = "by gRPC proto compiler (version 1.55.1)", comments = "Source: ztp.proto")
+@io.grpc.stub.annotations.GrpcGenerated
 public final class ZtpServiceGrpc {
 
-  private ZtpServiceGrpc() {}
+    private ZtpServiceGrpc() {
+    }
 
-  public static final String SERVICE_NAME = "ztp.ZtpService";
+    public static final String SERVICE_NAME = "ztp.ZtpService";
 
-  // Static method descriptors that strictly reflect the proto.
-  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId,
-      ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
+    // Static method descriptors that strictly reflect the proto.
+    private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
 
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRole",
-      requestType = ztp.Ztp.DeviceRoleId.class,
-      responseType = ztp.Ztp.DeviceRole.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId,
-      ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod() {
-    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
-    if ((getZtpGetDeviceRoleMethod = ZtpServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRole", requestType = ztp.Ztp.DeviceRoleId.class, responseType = ztp.Ztp.DeviceRole.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod() {
+        io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
         if ((getZtpGetDeviceRoleMethod = ZtpServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
-          ZtpServiceGrpc.getZtpGetDeviceRoleMethod = getZtpGetDeviceRoleMethod =
-              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRole"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRole.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRole"))
-              .build();
-        }
-      }
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpGetDeviceRoleMethod = ZtpServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
+                    ZtpServiceGrpc.getZtpGetDeviceRoleMethod = getZtpGetDeviceRoleMethod = io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRole")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRole.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRole")).build();
+                }
+            }
+        }
+        return getZtpGetDeviceRoleMethod;
     }
-    return getZtpGetDeviceRoleMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRolesByDeviceId",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = ztp.Ztp.DeviceRoleList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
-    if ((getZtpGetDeviceRolesByDeviceIdMethod = ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRolesByDeviceId", requestType = context.ContextOuterClass.DeviceId.class, responseType = ztp.Ztp.DeviceRoleList.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
         if ((getZtpGetDeviceRolesByDeviceIdMethod = ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
-          ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod = getZtpGetDeviceRolesByDeviceIdMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRolesByDeviceId"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleList.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRolesByDeviceId"))
-              .build();
-        }
-      }
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpGetDeviceRolesByDeviceIdMethod = ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
+                    ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod = getZtpGetDeviceRolesByDeviceIdMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRolesByDeviceId")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.DeviceId.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleList.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRolesByDeviceId")).build();
+                }
+            }
+        }
+        return getZtpGetDeviceRolesByDeviceIdMethod;
     }
-    return getZtpGetDeviceRolesByDeviceIdMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
-      ztp.Ztp.DeviceRoleState> getZtpAddMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpAdd",
-      requestType = ztp.Ztp.DeviceRole.class,
-      responseType = ztp.Ztp.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
-      ztp.Ztp.DeviceRoleState> getZtpAddMethod() {
-    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpAddMethod;
-    if ((getZtpAddMethod = ZtpServiceGrpc.getZtpAddMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpAddMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpAdd", requestType = ztp.Ztp.DeviceRole.class, responseType = ztp.Ztp.DeviceRoleState.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpAddMethod() {
+        io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpAddMethod;
         if ((getZtpAddMethod = ZtpServiceGrpc.getZtpAddMethod) == null) {
-          ZtpServiceGrpc.getZtpAddMethod = getZtpAddMethod =
-              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpAdd"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRole.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpAdd"))
-              .build();
-        }
-      }
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpAddMethod = ZtpServiceGrpc.getZtpAddMethod) == null) {
+                    ZtpServiceGrpc.getZtpAddMethod = getZtpAddMethod = io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpAdd")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRole.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleState.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpAdd")).build();
+                }
+            }
+        }
+        return getZtpAddMethod;
     }
-    return getZtpAddMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig,
-      ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpUpdate",
-      requestType = ztp.Ztp.DeviceRoleConfig.class,
-      responseType = ztp.Ztp.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig,
-      ztp.Ztp.DeviceRoleState> getZtpUpdateMethod() {
-    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
-    if ((getZtpUpdateMethod = ZtpServiceGrpc.getZtpUpdateMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpUpdate", requestType = ztp.Ztp.DeviceRoleConfig.class, responseType = ztp.Ztp.DeviceRoleState.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState> getZtpUpdateMethod() {
+        io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
         if ((getZtpUpdateMethod = ZtpServiceGrpc.getZtpUpdateMethod) == null) {
-          ZtpServiceGrpc.getZtpUpdateMethod = getZtpUpdateMethod =
-              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpUpdate"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleConfig.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpUpdate"))
-              .build();
-        }
-      }
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpUpdateMethod = ZtpServiceGrpc.getZtpUpdateMethod) == null) {
+                    ZtpServiceGrpc.getZtpUpdateMethod = getZtpUpdateMethod = io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpUpdate")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleConfig.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleState.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpUpdate")).build();
+                }
+            }
+        }
+        return getZtpUpdateMethod;
     }
-    return getZtpUpdateMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
-      ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpDelete",
-      requestType = ztp.Ztp.DeviceRole.class,
-      responseType = ztp.Ztp.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
-      ztp.Ztp.DeviceRoleState> getZtpDeleteMethod() {
-    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
-    if ((getZtpDeleteMethod = ZtpServiceGrpc.getZtpDeleteMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
+
+    private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
+
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpDelete", requestType = ztp.Ztp.DeviceRole.class, responseType = ztp.Ztp.DeviceRoleState.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpDeleteMethod() {
+        io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
         if ((getZtpDeleteMethod = ZtpServiceGrpc.getZtpDeleteMethod) == null) {
-          ZtpServiceGrpc.getZtpDeleteMethod = getZtpDeleteMethod =
-              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDelete"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRole.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDelete"))
-              .build();
-        }
-      }
-    }
-    return getZtpDeleteMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpDeleteAll",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = ztp.Ztp.DeviceDeletionResult.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
-    if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
-      synchronized (ZtpServiceGrpc.class) {
-        if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
-          ZtpServiceGrpc.getZtpDeleteAllMethod = getZtpDeleteAllMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDeleteAll"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  ztp.Ztp.DeviceDeletionResult.getDefaultInstance()))
-              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDeleteAll"))
-              .build();
-        }
-      }
-    }
-    return getZtpDeleteAllMethod;
-  }
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static ZtpServiceStub newStub(io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub>() {
-        @java.lang.Override
-        public ZtpServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ZtpServiceStub(channel, callOptions);
-        }
-      };
-    return ZtpServiceStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static ZtpServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub>() {
-        @java.lang.Override
-        public ZtpServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ZtpServiceBlockingStub(channel, callOptions);
-        }
-      };
-    return ZtpServiceBlockingStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary calls on the service
-   */
-  public static ZtpServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub>() {
-        @java.lang.Override
-        public ZtpServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new ZtpServiceFutureStub(channel, callOptions);
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpDeleteMethod = ZtpServiceGrpc.getZtpDeleteMethod) == null) {
+                    ZtpServiceGrpc.getZtpDeleteMethod = getZtpDeleteMethod = io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDelete")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRole.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceRoleState.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDelete")).build();
+                }
+            }
         }
-      };
-    return ZtpServiceFutureStub.newStub(factory, channel);
-  }
+        return getZtpDeleteMethod;
+    }
 
-  /**
-   */
-  public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
+    private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
 
-    /**
-     */
-    public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
+    @io.grpc.stub.annotations.RpcMethod(fullMethodName = SERVICE_NAME + '/' + "ZtpDeleteAll", requestType = context.ContextOuterClass.Empty.class, responseType = ztp.Ztp.DeviceDeletionResult.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+    public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod() {
+        io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
+        if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
+            synchronized (ZtpServiceGrpc.class) {
+                if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
+                    ZtpServiceGrpc.getZtpDeleteAllMethod = getZtpDeleteAllMethod = io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>newBuilder().setType(io.grpc.MethodDescriptor.MethodType.UNARY).setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDeleteAll")).setSampledToLocalTracing(true).setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(context.ContextOuterClass.Empty.getDefaultInstance())).setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(ztp.Ztp.DeviceDeletionResult.getDefaultInstance())).setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDeleteAll")).build();
+                }
+            }
+        }
+        return getZtpDeleteAllMethod;
     }
 
     /**
+     * Creates a new async stub that supports all call types for the service
      */
-    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
-    }
+    public static ZtpServiceStub newStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub>() {
 
-    /**
-     */
-    public void ztpAdd(ztp.Ztp.DeviceRole request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
+            @java.lang.Override
+            public ZtpServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ZtpServiceStub(channel, callOptions);
+            }
+        };
+        return ZtpServiceStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new blocking-style stub that supports unary and streaming output calls on the service
      */
-    public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
+    public static ZtpServiceBlockingStub newBlockingStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub>() {
+
+            @java.lang.Override
+            public ZtpServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ZtpServiceBlockingStub(channel, callOptions);
+            }
+        };
+        return ZtpServiceBlockingStub.newStub(factory, channel);
     }
 
     /**
+     * Creates a new ListenableFuture-style stub that supports unary calls on the service
      */
-    public void ztpDelete(ztp.Ztp.DeviceRole request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
+    public static ZtpServiceFutureStub newFutureStub(io.grpc.Channel channel) {
+        io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub> factory = new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub>() {
+
+            @java.lang.Override
+            public ZtpServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+                return new ZtpServiceFutureStub(channel, callOptions);
+            }
+        };
+        return ZtpServiceFutureStub.newStub(factory, channel);
     }
 
     /**
      */
-    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
-    }
+    public interface AsyncService {
 
-    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            getZtpGetDeviceRoleMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                ztp.Ztp.DeviceRoleId,
-                ztp.Ztp.DeviceRole>(
-                  this, METHODID_ZTP_GET_DEVICE_ROLE)))
-          .addMethod(
-            getZtpGetDeviceRolesByDeviceIdMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                ztp.Ztp.DeviceRoleList>(
-                  this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID)))
-          .addMethod(
-            getZtpAddMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                ztp.Ztp.DeviceRole,
-                ztp.Ztp.DeviceRoleState>(
-                  this, METHODID_ZTP_ADD)))
-          .addMethod(
-            getZtpUpdateMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                ztp.Ztp.DeviceRoleConfig,
-                ztp.Ztp.DeviceRoleState>(
-                  this, METHODID_ZTP_UPDATE)))
-          .addMethod(
-            getZtpDeleteMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                ztp.Ztp.DeviceRole,
-                ztp.Ztp.DeviceRoleState>(
-                  this, METHODID_ZTP_DELETE)))
-          .addMethod(
-            getZtpDeleteAllMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                ztp.Ztp.DeviceDeletionResult>(
-                  this, METHODID_ZTP_DELETE_ALL)))
-          .build();
-    }
-  }
-
-  /**
-   */
-  public static final class ZtpServiceStub extends io.grpc.stub.AbstractAsyncStub<ZtpServiceStub> {
-    private ZtpServiceStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        default void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
+        }
 
-    @java.lang.Override
-    protected ZtpServiceStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ZtpServiceStub(channel, callOptions);
-    }
+        /**
+         */
+        default void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void ztpAdd(ztp.Ztp.DeviceRole request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request, responseObserver);
-    }
+        /**
+         */
+        default void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
+        }
 
-    /**
-     */
-    public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request, responseObserver);
+        /**
+         */
+        default void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
+            io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
+        }
     }
 
     /**
+     * Base class for the server implementation of the service ZtpService.
      */
-    public void ztpDelete(ztp.Ztp.DeviceRole request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request, responseObserver);
+    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService, AsyncService {
+
+        @java.lang.Override
+        public io.grpc.ServerServiceDefinition bindService() {
+            return ZtpServiceGrpc.bindService(this);
+        }
     }
 
     /**
+     * A stub to allow clients to do asynchronous rpc calls to service ZtpService.
      */
-    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   */
-  public static final class ZtpServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ZtpServiceBlockingStub> {
-    private ZtpServiceBlockingStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+    public static class ZtpServiceStub extends io.grpc.stub.AbstractAsyncStub<ZtpServiceStub> {
 
-    @java.lang.Override
-    protected ZtpServiceBlockingStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ZtpServiceBlockingStub(channel, callOptions);
-    }
+        private ZtpServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceRole ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpGetDeviceRoleMethod(), getCallOptions(), request);
-    }
+        @java.lang.Override
+        protected ZtpServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ZtpServiceStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceRoleList ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceRoleState ztpAdd(ztp.Ztp.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpAddMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceRoleState ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpUpdateMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void ztpAdd(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpAddMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceRoleState ztpDelete(ztp.Ztp.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpDeleteMethod(), getCallOptions(), request);
-    }
+        /**
+         */
+        public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    /**
-     */
-    public ztp.Ztp.DeviceDeletionResult ztpDeleteAll(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpDeleteAllMethod(), getCallOptions(), request);
-    }
-  }
-
-  /**
-   */
-  public static final class ZtpServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ZtpServiceFutureStub> {
-    private ZtpServiceFutureStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
+        /**
+         */
+        public void ztpDelete(ztp.Ztp.DeviceRole request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request, responseObserver);
+        }
 
-    @java.lang.Override
-    protected ZtpServiceFutureStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new ZtpServiceFutureStub(channel, callOptions);
+        /**
+         */
+        public void ztpDeleteAll(context.ContextOuterClass.Empty request, io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
+            io.grpc.stub.ClientCalls.asyncUnaryCall(getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request, responseObserver);
+        }
     }
 
     /**
+     * A stub to allow clients to do synchronous rpc calls to service ZtpService.
      */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRole> ztpGetDeviceRole(
-        ztp.Ztp.DeviceRoleId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request);
-    }
+    public static class ZtpServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ZtpServiceBlockingStub> {
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request);
-    }
+        private ZtpServiceBlockingStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpAdd(
-        ztp.Ztp.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request);
-    }
+        @java.lang.Override
+        protected ZtpServiceBlockingStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ZtpServiceBlockingStub(channel, callOptions);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpUpdate(
-        ztp.Ztp.DeviceRoleConfig request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request);
-    }
+        /**
+         */
+        public ztp.Ztp.DeviceRole ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpGetDeviceRoleMethod(), getCallOptions(), request);
+        }
 
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpDelete(
-        ztp.Ztp.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request);
+        /**
+         */
+        public ztp.Ztp.DeviceRoleList ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public ztp.Ztp.DeviceRoleState ztpAdd(ztp.Ztp.DeviceRole request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpAddMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public ztp.Ztp.DeviceRoleState ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpUpdateMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public ztp.Ztp.DeviceRoleState ztpDelete(ztp.Ztp.DeviceRole request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpDeleteMethod(), getCallOptions(), request);
+        }
+
+        /**
+         */
+        public ztp.Ztp.DeviceDeletionResult ztpDeleteAll(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.blockingUnaryCall(getChannel(), getZtpDeleteAllMethod(), getCallOptions(), request);
+        }
     }
 
     /**
+     * A stub to allow clients to do ListenableFuture-style rpc calls to service ZtpService.
      */
-    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_ZTP_GET_DEVICE_ROLE = 0;
-  private static final int METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID = 1;
-  private static final int METHODID_ZTP_ADD = 2;
-  private static final int METHODID_ZTP_UPDATE = 3;
-  private static final int METHODID_ZTP_DELETE = 4;
-  private static final int METHODID_ZTP_DELETE_ALL = 5;
-
-  private static final class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final ZtpServiceImplBase serviceImpl;
-    private final int methodId;
-
-    MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
+    public static class ZtpServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ZtpServiceFutureStub> {
+
+        private ZtpServiceFutureStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            super(channel, callOptions);
+        }
+
+        @java.lang.Override
+        protected ZtpServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new ZtpServiceFutureStub(channel, callOptions);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpAddMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request);
+        }
+
+        /**
+         */
+        public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
+            return io.grpc.stub.ClientCalls.futureUnaryCall(getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request);
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_ZTP_GET_DEVICE_ROLE:
-          serviceImpl.ztpGetDeviceRole((ztp.Ztp.DeviceRoleId) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver);
-          break;
-        case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
-          serviceImpl.ztpGetDeviceRolesByDeviceId((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver);
-          break;
-        case METHODID_ZTP_ADD:
-          serviceImpl.ztpAdd((ztp.Ztp.DeviceRole) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_UPDATE:
-          serviceImpl.ztpUpdate((ztp.Ztp.DeviceRoleConfig) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_DELETE:
-          serviceImpl.ztpDelete((ztp.Ztp.DeviceRole) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_DELETE_ALL:
-          serviceImpl.ztpDeleteAll((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
+    private static final int METHODID_ZTP_GET_DEVICE_ROLE = 0;
+
+    private static final int METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID = 1;
+
+    private static final int METHODID_ZTP_ADD = 2;
+
+    private static final int METHODID_ZTP_UPDATE = 3;
+
+    private static final int METHODID_ZTP_DELETE = 4;
+
+    private static final int METHODID_ZTP_DELETE_ALL = 5;
+
+    private static final class MethodHandlers<Req, Resp> implements io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>, io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>, io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+
+        private final AsyncService serviceImpl;
+
+        private final int methodId;
+
+        MethodHandlers(AsyncService serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                case METHODID_ZTP_GET_DEVICE_ROLE:
+                    serviceImpl.ztpGetDeviceRole((ztp.Ztp.DeviceRoleId) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver);
+                    break;
+                case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
+                    serviceImpl.ztpGetDeviceRolesByDeviceId((context.ContextOuterClass.DeviceId) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver);
+                    break;
+                case METHODID_ZTP_ADD:
+                    serviceImpl.ztpAdd((ztp.Ztp.DeviceRole) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+                    break;
+                case METHODID_ZTP_UPDATE:
+                    serviceImpl.ztpUpdate((ztp.Ztp.DeviceRoleConfig) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+                    break;
+                case METHODID_ZTP_DELETE:
+                    serviceImpl.ztpDelete((ztp.Ztp.DeviceRole) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+                    break;
+                case METHODID_ZTP_DELETE_ALL:
+                    serviceImpl.ztpDeleteAll((context.ContextOuterClass.Empty) request, (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver);
+                    break;
+                default:
+                    throw new AssertionError();
+            }
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch(methodId) {
+                default:
+                    throw new AssertionError();
+            }
+        }
     }
 
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
+    public static io.grpc.ServerServiceDefinition bindService(AsyncService service) {
+        return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()).addMethod(getZtpGetDeviceRoleMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>(service, METHODID_ZTP_GET_DEVICE_ROLE))).addMethod(getZtpGetDeviceRolesByDeviceIdMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>(service, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID))).addMethod(getZtpAddMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_ADD))).addMethod(getZtpUpdateMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_UPDATE))).addMethod(getZtpDeleteMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>(service, METHODID_ZTP_DELETE))).addMethod(getZtpDeleteAllMethod(), io.grpc.stub.ServerCalls.asyncUnaryCall(new MethodHandlers<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>(service, METHODID_ZTP_DELETE_ALL))).build();
     }
-  }
 
-  private static abstract class ZtpServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
-    ZtpServiceBaseDescriptorSupplier() {}
+    private static abstract class ZtpServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+
+        ZtpServiceBaseDescriptorSupplier() {
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+            return ztp.Ztp.getDescriptor();
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
-      return ztp.Ztp.getDescriptor();
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+            return getFileDescriptor().findServiceByName("ZtpService");
+        }
     }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
-      return getFileDescriptor().findServiceByName("ZtpService");
+    private static final class ZtpServiceFileDescriptorSupplier extends ZtpServiceBaseDescriptorSupplier {
+
+        ZtpServiceFileDescriptorSupplier() {
+        }
     }
-  }
 
-  private static final class ZtpServiceFileDescriptorSupplier
-      extends ZtpServiceBaseDescriptorSupplier {
-    ZtpServiceFileDescriptorSupplier() {}
-  }
+    private static final class ZtpServiceMethodDescriptorSupplier extends ZtpServiceBaseDescriptorSupplier implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
 
-  private static final class ZtpServiceMethodDescriptorSupplier
-      extends ZtpServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
-    private final String methodName;
+        private final String methodName;
 
-    ZtpServiceMethodDescriptorSupplier(String methodName) {
-      this.methodName = methodName;
-    }
+        ZtpServiceMethodDescriptorSupplier(String methodName) {
+            this.methodName = methodName;
+        }
 
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
-      return getServiceDescriptor().findMethodByName(methodName);
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+            return getServiceDescriptor().findMethodByName(methodName);
+        }
     }
-  }
 
-  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+    private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
 
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    io.grpc.ServiceDescriptor result = serviceDescriptor;
-    if (result == null) {
-      synchronized (ZtpServiceGrpc.class) {
-        result = serviceDescriptor;
+    public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+        io.grpc.ServiceDescriptor result = serviceDescriptor;
         if (result == null) {
-          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
-              .setSchemaDescriptor(new ZtpServiceFileDescriptorSupplier())
-              .addMethod(getZtpGetDeviceRoleMethod())
-              .addMethod(getZtpGetDeviceRolesByDeviceIdMethod())
-              .addMethod(getZtpAddMethod())
-              .addMethod(getZtpUpdateMethod())
-              .addMethod(getZtpDeleteMethod())
-              .addMethod(getZtpDeleteAllMethod())
-              .build();
-        }
-      }
+            synchronized (ZtpServiceGrpc.class) {
+                result = serviceDescriptor;
+                if (result == null) {
+                    serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME).setSchemaDescriptor(new ZtpServiceFileDescriptorSupplier()).addMethod(getZtpGetDeviceRoleMethod()).addMethod(getZtpGetDeviceRolesByDeviceIdMethod()).addMethod(getZtpAddMethod()).addMethod(getZtpUpdateMethod()).addMethod(getZtpDeleteMethod()).addMethod(getZtpDeleteAllMethod()).build();
+                }
+            }
+        }
+        return result;
     }
-    return result;
-  }
 }
diff --git a/src/ztp/target/kubernetes/kubernetes.yml b/src/ztp/target/kubernetes/kubernetes.yml
index d2a59eb05f056d69f021d897e89f1ab9cbb102ce..9f78cd52fb8dd600370ba3c9951ab3507dd8b18a 100644
--- a/src/ztp/target/kubernetes/kubernetes.yml
+++ b/src/ztp/target/kubernetes/kubernetes.yml
@@ -3,24 +3,32 @@ apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 5f8866be9cb91871607627819258b0b375410467
-    app.quarkus.io/build-timestamp: 2024-01-26 - 16:39:32 +0000
+    app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
+    app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
     prometheus.io/scheme: http
   labels:
     app.kubernetes.io/name: ztpservice
+    app.kubernetes.io/version: 0.2.0
     app: ztpservice
+    app.kubernetes.io/managed-by: quarkus
   name: ztpservice
 spec:
   ports:
+    - name: https
+      port: 443
+      protocol: TCP
+      targetPort: 8443
+    - name: grpc
+      port: 5050
+      protocol: TCP
+      targetPort: 5050
     - name: http
       port: 9192
+      protocol: TCP
       targetPort: 8080
-    - name: grpc-server
-      port: 5050
-      targetPort: 5050
   selector:
     app.kubernetes.io/name: ztpservice
   type: ClusterIP
@@ -29,14 +37,16 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 5f8866be9cb91871607627819258b0b375410467
-    app.quarkus.io/build-timestamp: 2024-01-26 - 16:39:32 +0000
+    app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
+    app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
     prometheus.io/scheme: http
   labels:
     app: ztpservice
+    app.kubernetes.io/managed-by: quarkus
+    app.kubernetes.io/version: 0.2.0
     app.kubernetes.io/name: ztpservice
   name: ztpservice
 spec:
@@ -47,14 +57,16 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 5f8866be9cb91871607627819258b0b375410467
-        app.quarkus.io/build-timestamp: 2024-01-26 - 16:39:32 +0000
+        app.quarkus.io/commit-id: 9fcc34bb0e7806d8a5ca5f75cbf3cb9e3358d756
+        app.quarkus.io/build-timestamp: 2024-02-15 - 11:02:55 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
         prometheus.io/scheme: http
       labels:
         app: ztpservice
+        app.kubernetes.io/managed-by: quarkus
+        app.kubernetes.io/version: 0.2.0
         app.kubernetes.io/name: ztpservice
     spec:
       containers:
@@ -81,11 +93,14 @@ spec:
             timeoutSeconds: 10
           name: ztpservice
           ports:
-            - containerPort: 8080
-              name: http
+            - containerPort: 8443
+              name: https
               protocol: TCP
             - containerPort: 5050
-              name: grpc-server
+              name: grpc
+              protocol: TCP
+            - containerPort: 8080
+              name: http
               protocol: TCP
           readinessProbe:
             failureThreshold: 3
@@ -104,3 +119,13 @@ spec:
             requests:
               cpu: 50m
               memory: 512Mi
+          startupProbe:
+            failureThreshold: 3
+            httpGet:
+              path: /q/health/started
+              port: 8080
+              scheme: HTTP
+            initialDelaySeconds: 5
+            periodSeconds: 10
+            successThreshold: 1
+            timeoutSeconds: 10